Функция PHP, не возвращающая никаких данных методу JQuery ajax - PullRequest
0 голосов
/ 23 мая 2011

Я использую метод jquery ajax, чтобы отправить некоторые данные на сервер и получить ответ. Хотя 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 ]

3 голосов
/ 23 мая 2011

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

$data = array();
$data['test']=1;
echo json_encode($data);
2 голосов
/ 23 мая 2011

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

0 голосов
/ 23 мая 2011

Как указал Моргар, вы должны возвращать данные и не использовать 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
...