Как получить ответ jSON в переменную из jquery script
У меня возникли проблемы с моим jquery script ниже, это базовая урезанная версия, и даже она не будет работать, у меня есть файл php, который вызывает вызов jQuery script, я установил его кодировать и показывать ответ json
Затем в jquery script он должен прочитать значение и ответить на него, но он не получает ответ.
Является ли json.response неправильным способом вызова переменной в строке json, которая называется ответом имени?
Может кто-нибудь помочь, пожалуйста, я застрял
<?PHP
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
// set to retunr response=error
$arr = array ('resonse'=>'error','comment'=>'test comment here');
echo json_encode($arr);
?>
//the script above returns this:
{"response":"error","comment":"test comment here"}
<script type="text/javascript">
$.ajax({
type: "POST",
url: "process.php",
data: dataString,
dataType: "json",
success: function (data) {
if (json.response == 'captcha') {
alert('captcha');
} else if (json.response == 'error') {
alert('sorry there was an error');
} else if (json.response == 'success') {
alert('sucess');
};
}
})
</script>
ОБНОВЛЕНИЕ;
Я изменил
json.response
в
data.response
Но это не сделало его ork либо
Ответы
Ответ 1
Здесь script, переписан, чтобы использовать приведенные выше предложения и изменить метод no-cache.
<?php
// Simpler way of making sure all no-cache headers get sent
// and understood by all browsers, including IE.
session_cache_limiter('nocache');
header('Expires: ' . gmdate('r', 0));
header('Content-type: application/json');
// set to return response=error
$arr = array ('response'=>'error','comment'=>'test comment here');
echo json_encode($arr);
?>
//the script above returns this:
{"response":"error","comment":"test comment here"}
<script type="text/javascript">
$.ajax({
type: "POST",
url: "process.php",
data: dataString,
dataType: "json",
success: function (data) {
if (data.response == 'captcha') {
alert('captcha');
} else if (data.response == 'success') {
alert('success');
} else {
alert('sorry there was an error');
}
}
}); // Semi-colons after all declarations, IE is picky on these things.
</script>
Основная проблема здесь заключалась в том, что у вас была опечатка в JSON, которую вы возвращали ( "ответ" вместо "ответ" ). Это означало, что вы искали неправильное свойство в коде JavaScript. Один из способов уловить эти проблемы в будущем будет console.log
значение data
и убедитесь, что свойство, которое вы ищете, есть.
Изучение использования инструментов отладчика Chrome (или аналогичные инструменты в Firefox/Safari/Opera/etc.) также будет бесценным.
Ответ 2
Вы должны использовать data.response
в своем JS вместо json.response
.
Ответ 3
Ваш массив PHP определяется как:
$arr = array ('resonse'=>'error','comment'=>'test comment here');
Обратите внимание на неправильное использование "resonse
". Кроме того, как уже упоминал RaYell, вы должны использовать data
вместо json
в своей функции success
, потому что его параметр в настоящее время data
.
Попробуйте отредактировать свой PHP файл, чтобы изменить форму орфографии resonse
на response
. Он должен работать тогда.
Ответ 4
Посмотрите на эту питфал:
http://www.vertstudios.com/blog/avoiding-ajax-newline-pitfall/
Искал несколько часов, прежде чем я обнаружил, что в включенных файлах были некоторые разрывы строк.