Voici quelques exemples qui illustrent la définition et la détection des délais d'expiration dans les anciens et nouveaux paradigmes de jQuery.
Live Demo
Promesse avec 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
});
Notez que le paramètre textStatus (ou jqXHR.statusText ) vous indiquera quelle était l'erreur. Cela peut être utile si vous voulez savoir que l'échec a été causé par un délai d'attente.
erreur (jqXHR, textStatus, errorThrown)
Une fonction à appeler si la demande échoue. La fonction reçoit trois arguments: l'objet jqXHR (dans jQuery 1.4.x, XMLHttpRequest), une chaîne décrivant le type d'erreur qui s'est produite et un objet d'exception facultatif, le cas échéant. Les valeurs possibles pour le deuxième argument (en plus de null) sont "timeout", "error", "abort" et "parsererror". Lorsqu'une erreur HTTP se produit, errorThrown reçoit la partie textuelle de l'état HTTP, telle que «Not Found» ou «Internal Server Error». À partir de jQuery 1.5, le paramètre d'erreur peut accepter un tableau de fonctions. Chaque fonction sera appelée à son tour. Remarque: ce gestionnaire n'est pas appelé pour les requêtes de script inter-domaines et JSONP.
src: http://api.jquery.com/jQuery.ajax/
,
là après le}
.