Ajax PHP — отправка пользовательского значения через Ajax в PHP

#javascript #php #ajax

#javascript #php #ajax

Вопрос:

Это касается использования диаграмм Google.

В настоящее время я нахожусь в процессе настройки нескольких линейных диаграмм с использованием Google Charts. Данные, используемые для создания этих диаграмм, загружаются из базы данных MySQL через интерфейс Ajax-вызова PHP-скрипта для сбора данных.

В настоящее время я настроил и работаю, чтобы получать данные и корректно отображать их, пока я вручную размещаю необходимые данные в PHP-скрипте, например:

     $keyword = "Test";
    $query = $this->db->prepare("SELECT * FROM mytable WHERE keywords = ?");
    $query->bindValue(1, $keyword);
  

Итак, как видно из приведенного выше примера, я говорю скрипту использовать ключевое слово «Test».
Однако я хочу сделать это динамическим вызовом из-за того, что мне нужно сгенерировать и отобразить несколько разных диаграмм, каждая из которых содержит отдельную информацию.

Для достижения этой цели я в настоящее время устанавливаю параметр в URL-адресе на основе текущей загруженной страницы, например: www.mywebsite.com/chart.php?id=mykeyword

Нет, я, очевидно, могу захватить этот «идентификатор», используя (он находится над функцией Google Charts Ajax:

     $id = $_GET["id"]; 
  

Моя проблема здесь в том, что я понятия не имею, как отправлять пользовательские данные, идентификатор, через вызов ajax. Я пробовал несколько способов, но, похоже, я не могу заставить его отправлять через функцию PHP.

Это Google Charts ajax:

     <script type="text/javascript">
    google.load("visualization", "1", {packages:["corechart"]});
    google.setOnLoadCallback(drawChart);

   function drawChart() {
    var jsonData = $.ajax({
    url: "controller.php",
    dataType:"json",
    async: false
    }).responseText;


    jsonData = JSON.stringify(eval("("   jsonData   ")"));
    var containerId = "chart_div"; 
    try {
    var data = new google.visualization.DataTable(jsonData);
    var chart = new google.visualization.LineChart(document
    .getElementById('chart_div'));
    chart.draw(data, {width: 900, height: 220, vAxis: {maxValue: 10}});
    } catch (err) {
    alert( err.message );           
   }
   }
   </script>
  

Вызов Ajax отправляет данные на контроллер, который выглядит следующим образом:

     public function dataController() {  

        $update = new Chart($db);

        $update->keywordChart();
  

Теперь я знаю, что, очевидно, мне нужно добавить $id в качестве обратного вызова, чтобы его можно было отправить в функцию PHP, например:

     dataController($id)
  

Моя проблема в том, что я не могу получить $id для фактической отправки через вызов ajax.

Итак, каков был бы наилучший способ включить идентификатор URL-адреса в этот вызов Google Charts Ajax, чтобы он также отправлялся на controller.php файл?

Я предполагаю, что мне нужно как-то добавить его сюда где-нибудь:

         function drawChart() {
          var jsonData = $.ajax({
          url: "controller.php",
          dataType:"json",
          async: false
          }).responseText;
  

Ответ №1:

Вы можете выбрать один из этих двух :

  url: "controller.php?id="   id ,
  

или :

       url: "controller.php",
        type: "GET",
        data: { id: id},
  

Комментарии:

1. Это имеет смысл, я попробовал, но как мне тогда получить доступ к этому внутри PHP? Я предполагаю, что это поместит идентификатор внутри переменной как $id?

2. ДА. Просто присвоите значение переменной id в JavaScript и передайте его следующим образом, и вы отсортированы. Может быть передана переменная при вызове функции: функция drawChart(id)