Как вы можете обрабатывать ошибки в вызове getJSON? Я пытаюсь сослаться на службу междоменных сценариев, используя jsonp, как вы регистрируете метод ошибки?
jquery
cross-domain
jsonp
getjson
Аджай
источник
источник
Ответы:
$.getJSON()
это своего рода абстракция обычного вызова AJAX, где вы должны сказать, что хотите получить ответ в кодировке JSON.Вы можете обрабатывать ошибки двумя способами: в общем (путем настройки вызовов AJAX перед их фактическим вызовом) или конкретно (с помощью цепочки методов).
«универсальный» будет что-то вроде:
И «конкретный» способ:
источник
JSONP
кажется,getJSON
в таком случае не вызываетerror()
функцию. У меня та же проблема. Я думаю, это связано с тем, какJSONP
обрабатывается совершенно иначе, чем обычныеAJAX
вызовы,jQuery
несмотря наgetJSON
обработку обоих.JSON
сделано сXMLHTTPRequest
объектом, ноJSONP
сделано, динамически добавляя<script>
тег к страницеHEAD
.Кто-то дал Лучано эти баллы :) Я только что проверил его ответ - имел похожий вопрос - и работал отлично ...
Я даже добавляю свои 50 центов:
источник
Вот мое дополнение.
Из http://www.learnjavascript.co.uk/jq/reference/ajax/getjson.html и официального источника
« Методы обратного вызова jqXHR.success (), jqXHR.error () и jqXHR.complete (), представленные в jQuery 1.5, устарели с jQuery 1.8. Чтобы подготовить код для их возможного удаления, используйте jqXHR.done (), jqXHR Вместо этого .fail () и jqXHR.always (). "
Я сделал это, и вот обновленный фрагмент кода Лучано:
И с описанием ошибки плюс отображение всех данных json в виде строки:
Если вам не нравятся оповещения, замените их
console.log
источник
Я знаю, что прошло много времени с тех пор, как кто-то ответил здесь, и автор, вероятно, уже получил свой ответ либо отсюда, либо откуда-то еще. Однако я думаю, что этот пост поможет любому, кто ищет способ отслеживать ошибки и тайм-ауты при выполнении запросов getJSON. Поэтому ниже мой ответ на вопрос
Структура getJSON выглядит следующим образом (находится на http://api.jqueri.com ):
большинство людей реализуют это с помощью
где они используют URL-адрес var для предоставления ссылки на данные JSON, отправку данных в качестве места для добавления
"?callback=?"
и другие переменные, которые должны быть отправлены для получения верных данных JSON, и функцию успеха в качестве функции для обработки данных ,Однако вы можете добавить переменные status и xhr в вашу функцию успеха. Переменная состояния содержит одну из следующих строк: «success», «notmodified», «error», «timeout» или «parsererror», а переменная xhr содержит возвращенный объект XMLHttpRequest ( находится в w3schools )
Таким образом, легко отслеживать тайм-ауты и ошибки без необходимости реализовывать специальный трекер тайм-аута, который запускается после выполнения запроса.
Надеюсь, что это помогает кому-то еще ищет ответ на этот вопрос.
источник
Это исправлено в jQuery 2.x; В jQuery 1.x вы никогда не получите сообщение об ошибке
источник
Я столкнулся с этой же проблемой, но вместо того, чтобы создавать обратные вызовы для неудачного запроса, я просто возвратил ошибку с объектом данных json.
По возможности это кажется самым простым решением. Вот пример кода Python, который я использовал. (Используя Flask, jsonify f и SQLAlchemy от Flask)
Затем вы можете проверить Javascript, как это;
источник
Почему нет
??
Подробнее об используемом
.fail()
методе (jQuery 1.5+) см. Http://api.jquery.com/jQuery.ajax/#jqXHR.Поскольку
jqXHR
функция возвращается функцией,возможно.
источник
В некоторых случаях вы можете столкнуться с проблемой синхронизации с этим методом. Я написал обратный вызов внутри
setTimeout
функции, и он работал синхронно, просто отлично =)НАПРИМЕР:
источник
Это довольно старая ветка, но она появляется в поиске Google, поэтому я подумал, что добавлю ответ jQuery 3, используя обещания. Этот фрагмент также показывает:
Фрагмент кода:
источник