Подтвердить что ты не робот

Обработка ошибок с помощью .post()

Мне нужно изменить проект, написанный кем-то другим. Поскольку код беспорядок, я не могу реально изменить этот $.post() (или заменить его на $.ajax()). Что мне нужно сделать, так это узнать, возвращает ли сообщение что-то другое, а затем JSON и вернет его.

$.post('balbal.html', json, function(data) { ... my coude ... }, 'json')

Я вижу ответ post в console.log. Есть ли простой способ получить его?

4b9b3361

Ответ 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