Обработка ошибок с помощью .post()
Мне нужно изменить проект, написанный кем-то другим. Поскольку код беспорядок, я не могу реально изменить этот $.post() (или заменить его на $.ajax()). Что мне нужно сделать, так это узнать, возвращает ли сообщение что-то другое, а затем JSON и вернет его.
$.post('balbal.html', json, function(data) { ... my coude ... }, 'json')
Я вижу ответ post в console.log. Есть ли простой способ получить его?
Ответы
Ответ 1
Есть несколько способов сделать это, но если вы не получите ответ об ошибке, доступный через возвращаемый объект данных JSON, вы можете использовать $. ajaxSetup() для определения значений по умолчанию для всех вызовов ajax через jQuery. Несмотря на то, что метод $.post()
не указывает обработчик ошибок или обратный вызов сам по себе, метод $.ajaxSetup()
будет захватывать любые ошибки ajax и выполнять функцию, которую вы определяете для него.
В качестве альтернативы существует также функция $. ajaxError(), которая будет делать то же самое.
Обратите внимание, что это не будет работать, если ответ JSON вернется правильно, но с кодом ошибки на стороне сервера. Если вы хотите захватить эти типы дел, вам может быть лучше их искать, используя метод $. AjaxComplete()
Ответ 2
Определите обратный вызов ошибки сразу после сообщения. Обратите внимание на размещение в полуколонии только в конце.
$.post('balbal.html', json, function(data) {
// ... my code ...
})
.fail(function(response) {
alert('Error: ' + response.responseText);
});
http://api.jquery.com/deferred.fail/
Для более старых версий jQuery (pre-1.8) используйте . error вместо того же синтаксиса.
Ответ 3
Вы можете использовать $.ajax()
($.post
- это ярлык, который в конечном итоге вызывает его), и определить обратный вызов ошибки.
Или, если вы действительно этого не хотите, вызовите
$.ajaxError(function(){
//error handler
})
до этого $.post