Détermine si l’erreur $ .ajax est un délai d’attente

J’utilise la magie de jQuery.ajax( settings ) .

Cependant, je me demande si quelqu’un a beaucoup joué avec le délai d’attente?

Je sais que c’est essentiellement pour dicter l’heure locale pour une demande, mais peut-il déclencher quelque chose si le délai est atteint? Ou arrête-t-il simplement d’écouter une réponse?

En lisant le site jQuery, je peux voir qu’il n’y a pas d’arguments passés, donc cela semble être un réglage simple avec une seule capacité. Ce qui est bien

Mais, je voudrais déclencher une alerte ou une fonction si le délai est atteint. Je peux voir que le paramètre d’erreur n’est pas déclenché, dans ce cas.

Voici mon extrait:

 $("form#testform").submit(function(){ var allFormValues = $("form#testform").serialize(); $.ajax({ cache:false, timeout:8000, // I chose 8 secs for kicks type:"POST", url:"someurl.php", data:allFormValues, error:function(){ alert("some error occurred") }, success:function(response){ alert(response); } }); }); 

Est-ce que quelqu’un sait comment travailler plus avec timeout?

Si votre gestionnaire d’événement d’erreur prend les trois arguments (xmlhttprequest, textstatus et message) en cas d’expiration du délai, l’argument de statut sera «timeout».

Par la documentation jQuery :

Les valeurs possibles pour le deuxième argument (outre null) sont “timeout”, “error”, “notmodified” et “parsererror”.

Vous pouvez alors gérer votre erreur en conséquence.

J’ai créé ce violon qui le démontre.

 $.ajax({ url: "/ajax_json_echo/", type: "GET", dataType: "json", timeout: 1000, success: function(response) { alert(response); }, error: function(xmlhttprequest, textstatus, message) { if(textstatus==="timeout") { alert("got timeout"); } else { alert(textstatus); } } });​ 

Avec jsFiddle, vous pouvez tester les appels ajax – il attendra 2 secondes avant de répondre. J’ai mis le délai d’attente à 1 seconde, il devrait donc y avoir erreur et renvoyer un textstatus de ‘timeout’ au gestionnaire d’erreurs.

J’espère que cela t’aides!