JQuery.post() функция обратного вызова отказа?

Скажем, у меня есть код:

$.post("test.php", function(data) {
   alert("Data Loaded: " + data);
});

Есть ли способ проверить, не провалился ли запрос (например, из-за таймаута)?

Ответ 1

Да, из документации по jQuery:

$.post("test.php", function(data) {
   alert("Data Loaded: " + data);
})
.fail(function() { 
   alert("error"); 
})

Обновление: drake7077: "ошибка устарела с jquery 1.8, используйте .fail()"

Ответ 2

Две возможности:

  • Вы можете зарегистрировать общий обратный вызов "ajax error", который вызывается, когда сбой любой операции ajax:

    $(document).ajaxError(function(event, jqXHR, settings, exception) { ... });
    
  • Вместо этого вы можете вернуться к $.ajax() и включить свой собственный обработчик ошибок напрямую.

edit — @amosrivera прав - новые возвращаемые значения "Отложенные" позволяют вводить обработчики. Они доступны с jQuery 1.5 и новее.