Функция PHP не возвращает никаких данных в метод jQuery ajax

#ajax #jquery #return #jquery-post

#ajax #jquery #Возврат #jquery-post

Вопрос:

Я использую ajax-метод jquery для отправки некоторых данных на сервер и получения ответа. Хотя php-код на стороне сервера возвращает строку / массив в кодировке json, ответ возвращается как null.

Может ли кто-нибудь указать на ошибку, которую я совершаю. Ниже, если мой метод jquery ajax, с помощью которого я нажимаю postData.php страница.

         $.ajax({
            url:'postData.php',
            type:'POST',
            data:data,
            dataType: "json",
            success: function(response){
                console.log(response);
            }
        });
  

Содержимое в postData.php довольно прямолинейно, поскольку я все еще разрабатываю его.

     $data = array();
//inside postData.php
    $data['test']=1;
    return json_encode($data);
  

Она должна возвращать строку json, но она возвращает null. Я также пытался повторить строку сразу после объявления массива $ data, она повторяет ее в firebug, но ответ приходит, когда я запускаю консоль.войдите в систему при успешном обратном вызове, он возвращается как null.

Ответ №1:

Чтобы вернуть результат в вашу ajax-функцию, вы должны повторить его, а не возвращать, например:

 $data = array();
$data['test']=1;
echo json_encode($data);
  

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

1. Спасибо!! Я использовал jquery и ajax довольно долго, и в спешке, чтобы все было сделано быстро, я допустил эту забавную ошибку!!

Ответ №2:

Это все, что есть в postData.php ? В какой-то момент вам нужно записать это в буфер (echo json_encode($data);).

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

1. Спасибо!! Я использовал jquery и ajax довольно долго, и в спешке, чтобы все было сделано быстро, я допустил эту забавную ошибку!!

Ответ №3:

Как указал Моргар, вы должны повторять данные обратно и не использовать return .

 $data = array();
$data['test']=1;
echo json_encode($data); //echo instead of return
  

В то же время в вашей функции ajax при успешном выполнении вы должны получить доступ к ответу в виде массива.

 **Incorrect**
console.log(response); //--> would return an error

**Should Be**
console.log(response[0]); //--> read the returned first array element
  

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

1. Почему это должно быть ошибкой? Он просто console.log() обрабатывает массив.

2. @John Green — PageSpike : Хм, я бы подумал, что это вызвало бы ошибку, потому что, если у него есть 2 элемента в массиве, для получения значения это было бы response [0] и response[1]? Неужели я ошибаюсь на этот счет?

3. Обычно это называется разреженным массивом. Это законно делать.