Отправить переменную из Javascript в PHP с помощью метода AJAX post

#javascript #php #jquery #ajax

#javascript #php #jquery #ajax

Вопрос:

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

  1. Создайте переменную (на основе того, что пользователь нажал на круговой диаграмме)
  2. Отправьте эту переменную в PHP с помощью AJAX
  3. Откройте страницу PHP, на которую была отправлена переменная

Задача номер один работает, что подтверждается журналом консоли.
Задача два не работает. Хотя я получаю предупреждение с сообщением «Успех», на test.php переменная не отражается эхом.
Третья задача выполняется.

Javascript (находится в index.php ):

     function selectHandler(e)     {
            // Task 1 - create variable
            var itemNum = data.getValue(chart.getSelection()[0].row, 0);
            if (itemNum) {

                console.log('Item num: '   itemNum);
                console.log('Type: '   typeof(itemNum));

                // Task 2 - send var to PHP
                $.ajax({
                    type: 'POST',
                    url: 'test.php',
                    dataType: 'html',
                    data: {
                        'itemNum' : itemNum,
                    },
                    success: function(data) {
                            alert('success!');
                    }
                });

                // Task 3 - open test.php in current tab
                window.location = 'test.php';
            }
        }
  

PHP (находится в test.php )

     $item = $_POST['itemNum'];
    echo "<h2>You selected item number: " . $item . ".</h2>";
  

Спасибо всем, кто может помочь!

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

1. Я думаю, что ваша проблема заключается в типе данных, поскольку вы отправляете json, но определяете html. Попробуйте с dataType: 'json'

2. Тип данных @DekiChan — это тип ответа .

3. Отраженные значения находятся в результате Ajax (который здесь называется data)

Ответ №1:

Из того, что я могу сказать, вы не знаете, для чего используется ajax, если вы когда-либо перенаправляете вызов ajax, вам не нужен ajax

Смотрите следующую функцию (без ajax):

 function selectHandler(e)     {
            // Task 1 - create variable
            var itemNum = data.getValue(chart.getSelection()[0].row, 0);
            if (itemNum) {

                console.log('Item num: '   itemNum);
                console.log('Type: '   typeof(itemNum));

                window.location = 'test.php?itemNum=' itemNum;
            }
        }
  

изменить:

    $item = $_GET['itemNum'];
    echo "<h2>You selected item number: " . $item . ".</h2>";
  

или лучше выполнить простой post-запрос из формы, как это делают обычные страницы 🙂

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

1. Да, мне пришлось очень быстро выучить PHP для задания. Это сработало отлично. Чем ты!!! 🙂

Ответ №2:

Попробуйте это:

 success: function(data) {
    $("body").append(data);
    alert('success!');
}
  

По сути, data это ответ, который вы повторили из файла PHP. И используя jQuery, вы можете append() получить html-ответ на ваш элемент body.

Ответ №3:

вы должны изменить этот код

 'itemNum' : itemNum,
  

для этого

 itemNum : itemNum,
  

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

1. Нет ничего плохого в наличии или отсутствии кавычек.

2. @RaxWeber но это случилось со мной, в то время как переменные имели кавычки в php, я не мог их получить, после удаления это сработало!

3. Ну, PHP отличается от JavaScript .

Ответ №4:

Кажется contentType , отсутствует, посмотрите, поможет ли это:

     $.ajax({
      type: 'POST',
      url: 'test.php',
      dataType: "json",          
      data: {
          'itemNum' : itemNum,
      },
      contentType: "application/json",
      success: function (response) {
        alert(response);
      },
      error: function (error) {
        alert(error);
      }
    });
  

Ответ №5:

вы можете легко передавать данные в php через скрытые переменные в html, например, наша html-страница содержит скрытую переменную с уникальным идентификатором, подобным этому..

 <input type="hidden" id="hidden1" value="" name="hidden1" />
  

В нашем файле javascript содержится запрос ajax, подобный этому

   $.ajax({
  type: 'POST',
  url: 'test.php',               
  data: {
      'itemNum' : itemNum,
  }

  success: function (data) {
    // On success we assign data to hidden variable with id "hidden1"  like this
$('#hidden1').val(data);
  },
  error: function (error) {
    alert(error);
  }
});
  

Затем мы можем получить доступ к этому значению в форме отправки или с помощью javascript

доступ через Javascript (Jquery)

 var data=$('#hidden1').val();
  

доступ через отправку формы (МЕТОД POST) выглядит следующим образом

 <?php
$data=$_POST['hidden1'];
// remaining code goes here
?>