jQuery.ajax () + пустой JSON возражают = ошибка анализа

Я получаю ошибку анализа при использовании jQuery для загрузки некоторых данных JSON. Вот отрывок моего кода:

jQuery.ajax({
    dataType: "json",

    success: function (json)
    {
        jQuery.each(json, function ()
        {
            alert(this["columnName"]);
        });
    }
});

Я не получаю ошибок при парсинге непустого объекта JSON. Таким образом, мое предположение - то, что проблема с моим сериализатором.


Вопрос: как я форматирую пустой объект JSON, который jQuery не будет считать уродливым?

Это - то, что я попробовал до сих пор без успеха:

{[]}

{[null]}

{}

{null}


{"rows": []}

{"rows": null}

{"rows": {}}



ОБНОВЛЕНИЕ:

Я могу понять, что был несколько неопределенен - позволяют мне попытаться разъясниться:

Парсинг объекта JSON не является проблемой здесь - JQuery - я думаю.

jQuery бросает ошибку анализа (вызывает функцию ошибок). Кажется, что внутренняя проверка jQuery JSON не принимает ни одного из перед упомянутыми объектами. Даже допустимые.

Вывод функции ошибок:

XMLHttpRequest: XMLHttpRequest readyState=4 status=200
textStatus: parsererror
errorThrown: неопределенный

Это идет для всего из перед упомянутыми объектами.

15
задан cllpse 6 April 2009 в 13:41
поделиться

4 ответа

Во-первых {[]}, {[null]}, и {null} не будет работать, потому что они - все недопустимые объекты JSON (как проверено блоком проверки допустимости JSON).

Остающиеся объекты являются всеми допустимыми объектами JSON, таким образом, Ваш success функция должна становиться вызванной.

Если Вы передаете немассив или подобный массиву объектный объект затем each функция перечислит Ваш json объект его именованными свойствами. В случае Ваших трех объектов, что у каждого есть a rows свойство this будет установлен на [], null, и {} соответственно, ни один из которых не имеет a columnName припишите, таким образом, неопределенная ошибка будет брошена.

Ваш {} объект, с другой стороны, не имеет никаких свойств, так не должен вызывать ошибку потому что each вызов циклично выполнится 0 раз. Что отображает следующая строка, если Вы добавляете его как первую строку в Вашем success функция?

alert(typeof json + ' ' + (json == null));
5
ответ дан 1 December 2019 в 03:35
поделиться

Вы ищете это:

[]

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

2
ответ дан 1 December 2019 в 03:35
поделиться

Вы проверяли, возвращается ли JSON правильно во-первых перед каждым? Установите пустое значение как {} и проверьте, похоже ли оно на это прежде .each

Также это помогло бы знать, как Ваш JSON похож, когда существуют данные.

1
ответ дан 1 December 2019 в 03:35
поделиться

Вместо:

$(json).each(function () { ... });

Я думаю, что Вы хотите использовать:

$.each(json, function () { ... });

Из jQuery.each документации:

Эта функция не является тем же как $ () .each () - который используется для итерации, исключительно, по объекту jQuery. Эта функция может использоваться для итерации по чему-либо.

1
ответ дан 1 December 2019 в 03:35
поделиться
Другие вопросы по тегам:

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