Ось кілька прикладів, які демонструють налаштування та виявлення тайм-аутів у старих та нових парадигмах jQuery.
Live Demo
Обіцяйте за допомогою jQuery 1.8+
Promise.resolve(
$.ajax({
url: '/getData',
timeout:3000 //3 second timeout
})
).then(function(){
//do something
}).catch(function(e) {
if(e.statusText == 'timeout')
{
alert('Native Promise: Failed from timeout');
//do something. Try again perhaps?
}
});
jQuery 1.8+
$.ajax({
url: '/getData',
timeout:3000 //3 second timeout
}).done(function(){
//do something
}).fail(function(jqXHR, textStatus){
if(textStatus === 'timeout')
{
alert('Failed from timeout');
//do something. Try again perhaps?
}
});
jQuery <= 1.7.2
$.ajax({
url: '/getData',
error: function(jqXHR, textStatus){
if(textStatus === 'timeout')
{
alert('Failed from timeout');
//do something. Try again perhaps?
}
},
success: function(){
//do something
},
timeout:3000 //3 second timeout
});
Зауважте, що параметр textStatus (або jqXHR.statusText ) дозволить вам знати, у чому помилка. Це може бути корисно, якщо ви хочете знати, що збій був викликаний тайм-аутом.
помилка (jqXHR, textStatus, errorThrown)
Функція, яку потрібно викликати, якщо запит не працює. Функція отримує три аргументи: об’єкт jqXHR (в jQuery 1.4.x, XMLHttpRequest), рядок, що описує тип помилки, що виникає, і необов'язковий об'єкт виключення, якщо такий стався. Можливі значення для другого аргументу (крім нульового) - "timeout", "error", "abort" та "parsererror". Якщо виникає помилка HTTP, errorThrown отримує текстову частину статусу HTTP, наприклад "Не знайдено" або "Помилка внутрішнього сервера". Станом на jQuery 1.5, налаштування помилок може приймати масив функцій. Кожна функція буде викликана по черзі. Примітка. Цей обробник не викликається для міждоменного скрипту та запитів JSONP.
src: http://api.jquery.com/jQuery.ajax/
,
там після}
.