$.ajax({
url: "test.html",
error: function(){
//do something
},
success: function(){
//do something
}
});
Parfois, la success
fonction fonctionne bien, parfois non.
Comment définir un délai d'expiration pour cette demande ajax? Par exemple, 3 secondes, si le temps est écoulé, affichez une erreur.
Le problème est que la requête ajax gèle le bloc jusqu'à la fin. Si le serveur est en panne pendant un certain temps, il ne s'arrêtera jamais.
,
là après le}
.Réponses:
Veuillez lire la
$.ajax
documentation , ceci est un sujet couvert.Vous pouvez voir quel type d'erreur a été généré en accédant au paramètre textStatus de l'
error: function(jqXHR, textStatus, errorThrown)
option. Les options sont "timeout", "error", "abort" et "parsererror".la source
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+
jQuery 1.8+
jQuery <= 1.7.2
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.
src: http://api.jquery.com/jQuery.ajax/
la source
$.ajax().fail()
et$.ajax().error()
?Vous pouvez utiliser le
timeout
paramètre dans les options ajax comme ceci:Lisez tout sur les options ajax ici: http://api.jquery.com/jQuery.ajax/
N'oubliez pas que lorsqu'un timeout se produit, le
error
gestionnaire est déclenché et non lesuccess
gestionnaire :)la source
utilisez la
.ajax
fonction jQuery complète . comparer avec https://stackoverflow.com/a/3543713/1689451 pour un exemple.sans test, il suffit de fusionner votre code avec la question SO référencée:
la source