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

Я полагаю, вы пытаетесь подключиться к REST API? Тогда вам не нужен другой язык программирования, вы можете просто использовать собственные функции JavaScript. Посмотрите на fetch и asnyc/await. Кроме того, есть хорошая библиотека под названием axios, которую вы можете проверить, что делает некоторые из этих вещей более удобными.

Надеюсь, что это помогает.

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

5 ответов

Во-первых {[]}, {[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
поделиться

Возможно, ваша веб-служба возвращает значение null. Я обнаружил, что возврат null из вызова веб-службы возвращает ответ с кодом состояния 200, «Ok», но после этого jQuery выдает ошибку синтаксического анализа.

Если это так, то это не имеет никакого отношения к тому, что вы отправляете на сервер, и ко всему, что сервер отправляет обратно.

Если вы можете изменить веб-службу, вы можете попробовать вернуть пустой объект JSON или значение по умолчанию вместо Null. В качестве альтернативы вы можете проверить этот сценарий ошибки в своем обработчике ошибок, зная, что это означает, что ваш вызов вернул null.

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

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