Suivi erreur AJAX sur readystate 0, l'état 0 et l'erreur statusText

J'ai lu toutes ces questions similaires: UnDeuxTroisQuatreCinq et Six. Mais j'ai besoin de déboguer plus.

Tous que les questions de dire que le problème est dû à la croix-domaine de la politique et e.preventDefault() résout le problème. Mais je doute que cela peut casser certains autres choses donc j'ai besoin d'être sûr.

Dans mon site j'ai une opération qui est tiré 15 fois par jour. Lorsque l'utilisateur visite une page web, mon fichier javascript vérifie pour un élément. Si un élément existe, il fait un appel AJAX.

$(document).ready(function() {

    //I do something here

    if ($('#mydiv').length !== 0) {

       var startTime = new Date().getTime();        

       $.ajax({
           type: "POST",
           url: "/mypage",
           success: function (data) {
               //I do something here
           },
           timeout: 20000,
           error: function(r, s, e) {
               var elapsedTime = (new Date().getTime() - startTime );
               var string = "readyState: "+r.readyState+", status: "+r.status+", statusText: "+r.statusText+", responseText: "+r.responseText+", textStatus: "+s+", error: "+e +", elapsedTime: "+elapsedTime;
               //send this string to server for logging
              formData = {string:string};
              $.ajax({
                url : "/mylog",
                type: "POST",
                data : formData
              });
           }
       });
     }

    //I do something here
});

Pour le 15k demandes, ~70 fois, l'utilisateur reçoit l'AJAX d'erreur. ~20 est dû au délai d'expiration. ~50 est en raison d'une erreur inconnue. Lorsque je vérifie les clients les journaux, je vois que la requête AJAX donne ces valeurs pour erreur inconnue: readyState: 0, status: 0 and statusText: error

Bien que l'e.preventDefault() est recommandé pour cette question. J'ai besoin de savoir ce que l'utilisateur fait de cette erreur. Dans mon fichier javascript je ne fais pas de la croix de domaine demande. Mais je ne peux pas savoir ce que l'utilisateur fait de cette erreur ? Est-il possible d'en savoir plus pour cette erreur ?

Note: j'ai suivi le temps entre "appel AJAX start" et "AJAX d'erreur". Temps moyen est de 1500 à 2000 ms.

Edit: Si j'utilise preventDefault()où puis-je le mettre ? Parce que je ne suis pas inscrit une fonction de clic etc.

Edit2: Cette page dit ceci:

Nous avons constaté que cela pourrait se produire si la requête ajax est arriver
annulés avant la fin. Nous avons pu reproduire le problème si nous
déclenché la requête ajax et puis tout de suite cliquez sur un lien pour
naviguez à partir de la page. jQuery déclenche l'événement d'erreur lors de l'
l'utilisateur quitte la page, soit en actualisant, en cliquant sur un
lien, ou de modifier l'URL dans le navigateur.

Mais je n'arrivais pas à reproduire le problème en cliquant sur un lien alors que l'AJAX est en cours de chargement.

source d'informationauteur trante | 2014-07-29