JQuery getJson не вызывает обратный вызов - PullRequest
4 голосов
/ 15 февраля 2010

У меня есть следующий код JavaScript:

$.get("categories/json_get_cities/" + stateId,  function(result)
        {            
            //code here
        }, 'json'
    );

И код PHP, который обрабатывает его, в основном выводит что-то вроде этого:

function json_get_cities($stateId)
{
    //code here
    echo json_encode(array('cities'=>$cities));
}

В консоли Firebug я вижу, что ajax-запрос выполняется, как и ожидалось, получен ответ 200 OK и возвращен правильно выглядящий объект JSON, содержащий города. Однако по какой-то причине функция обратного вызова, которую я передаю jquery, не вызывается.

Даже ввод вызова debugger в верхней части функции, т.е.

$.get("categories/json_get_cities/" + stateId,  function(result)
        {            
            debugger;
            //code here
        }, 'json'
    );

не работает. Однако, если я удаляю третий аргумент json, вызывается функция (но текст ответа обрабатывается как обычный текст, а не как объект JSON).

Вот ответ JSON, возвращаемый сервером:

{"cities":[{"id":"1613","stateId":"5","name":"Acton"}]}

Есть мысли?

Ответы [ 4 ]

11 голосов
/ 15 февраля 2010

Вы подтвердили, что это действительно JSON? В jQuery 1.4 разбор JSON выполняется строго, любой искаженный JSON отклоняется и генерируется ошибка синтаксического анализа.

Попробуйте console.log(arguments) в обратном вызове для отладки.

Кроме того, вы утверждаете, что 'json' является четвертым аргументом, но он должен быть третьим (как в вашем примере).

7 голосов
/ 15 февраля 2010

Убедитесь, что json действителен при использовании этого ...

JSON Validator

3 голосов
/ 15 февраля 2010

Другим способом устранения некоторых из этих проблем ajax является использование метода .ajax, передавая GET в качестве типа метода, а не метод .get. Это позволит вам указать функцию обратного вызова ошибки в дополнение к методу успеха.

1 голос
/ 17 ноября 2012

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

В коде:

{
  name: "value"
}

В файле JSON:

{
  "name": "value"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...