Ecco alcuni esempi che dimostrano l'impostazione e il rilevamento dei timeout nei paradigmi vecchi e nuovi di jQuery.
Live Demo
Promettilo con 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
});
Si noti che il parametro textStatus (o jqXHR.statusText ) ti farà sapere qual è stato l'errore. Ciò può essere utile se si desidera sapere che l'errore è stato causato da un timeout.
errore (jqXHR, textStatus, errorThrown)
Una funzione da chiamare se la richiesta fallisce. La funzione riceve tre argomenti: l'oggetto jqXHR (in jQuery 1.4.x, XMLHttpRequest), una stringa che descrive il tipo di errore che si è verificato e un oggetto facoltativo di eccezione, se presente. I valori possibili per il secondo argomento (oltre a null) sono "timeout", "errore", "abort" e "parsererror". Quando si verifica un errore HTTP, errorThrown riceve la parte testuale dello stato HTTP, ad esempio "Non trovato" o "Errore interno del server". A partire da jQuery 1.5, l'impostazione dell'errore può accettare una serie di funzioni. Ogni funzione verrà chiamata a turno. Nota: questo gestore non viene chiamato per le richieste di script e domini tra domini.
src: http://api.jquery.com/jQuery.ajax/
,
lì dopo il}
.