#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. Обычно это называется разреженным массивом. Это законно делать.