J'ai eu à traiter avec le même cas d'utilisation aujourd'hui. L'application que je suis en train de travailler sur ces longue appels ajax qui peut être interrompu par 1) l'utilisateur de naviguer à l'extérieur ou 2) une sorte de temporaire de connexion ou de panne du serveur. Je veux le gestionnaire d'erreur pour s'exécuter uniquement pour de connexion ou de panne du serveur et non pas pour l'utilisateur de naviguer à l'extérieur.
J'ai d'abord essayé Alastair Pitts réponse, mais il ne fonctionne pas parce que les deux abandonnée demandes de connexion et de l'échec de l'état code et readyState à 0. Ensuite, j'ai essayé sieppl réponse; aussi n'a pas fonctionné car dans les deux cas, aucune réponse n'est donnée, donc pas d'en-tête.
La seule solution qui a fonctionné pour moi est de définir un écouteur pour fenêtre.onbeforeunload, qui définit une variable globale pour indiquer que la page a été déchargé. Le gestionnaire d'erreur pouvez ensuite vérifier et appeler le gestionnaire d'erreur uniquement si la page n'a pas été déchargé.
var globalVars = {unloaded:false};
$(window).bind('beforeunload', function(){
globalVars.unloaded = true;
});
...
$.ajax({
error: function(jqXHR,status,error){
if (globalVars.unloaded)
return;
}
});