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

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

Может ли кто-то указать на ошибку, которую я совершаю. Ниже, если мой метод 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, но возвращает ноль. Я также попытался отобразить строку сразу после объявления массива $ data, он отобразит ее в firebug, но в ответ я получаю console.log при успешном обратном вызове, он возвращается как нулевой.

3 ответа

Решение

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

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

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

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

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

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

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

**Should Be**
console.log(response[0]); //--> read the returned first array element
Другие вопросы по тегам