Как получить jSON ответ в переменную из сценария jQuery

Не пропускайте XML-RPC. Если Вы сразу после легкого решения тогда существует много, чтобы быть сказанным для протокола, который может быть определен на нескольких страницах текста и реализован в минимальном объеме кода. XML-RPC был вокруг в течение многих лет, но пошел вышедший из моды некоторое время - но минималистское обращение, кажется, дает ему что-то вроде возрождения в последнее время.

20
задан JasonDavis 11 August 2009 в 17:17
поделиться

3 ответа

Вот сценарий, переписанный с учетом приведенных выше предложений и изменения вашего метода без кеширования.

<?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 и т. д.).

28
ответ дан 30 November 2019 в 00:05
поделиться

Вы должны использовать data.response в своем JS вместо json.response .

5
ответ дан 30 November 2019 в 00:05
поделиться

Ваш массив PHP определяется как:

$arr = array ('resonse'=>'error','comment'=>'test comment here');

Обратите внимание на неправильное написание « резонанс ». Кроме того, как упоминал RaYell, вы должны использовать data вместо json в своей функции success , потому что ее параметром в настоящее время является data .

Попробуйте отредактировать файл PHP, чтобы изменить форму написания резонанс на ответ . Тогда он должен работать.

4
ответ дан 30 November 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: