Verfolgen des AJAX-Fehlers bei Fertigstatus 0, Status 0 und Statustextfehler

9

Ich lese all diese ähnlichen Fragen: 1 , 2 , 3 , 4 , 5 und 6 . Aber ich muss mehr debuggen.

Alle diese Fragen sagen, dass das Problem auf die Domänenübergreifende Richtlinie zurückzuführen ist und e.preventDefault() das Problem löst. Aber ich bezweifle, dass dies einige andere Dinge brechen kann, also muss ich mir sicher sein.

In meiner Site habe ich eine Operation, die 15k mal am Tag abgefeuert wird. Wenn der Benutzer eine Webseite besucht, sucht meine Javascript-Datei nach einem Element. Wenn Element existiert, macht es einen AJAX-Aufruf.

%Vor%

Für die 15k-Anfragen wird ~ 70 mal der Benutzer AJAX-Fehler erhalten. ~ 20 ist wegen Zeitüberschreitung. ~ 50 ist auf einen unbekannten Fehler zurückzuführen. Wenn ich die Protokolle der Clients überprüfe, sehe ich, dass die AJAX-Anfrage diese Werte für den unbekannten Fehler enthält: readyState: 0, status: 0 and statusText: error

Obwohl e.preventDefault () für dieses Problem empfohlen wird. Ich muss wissen, welcher Benutzer für diesen Fehler macht. In meiner Javascript-Datei mache ich keine Cross-Domain-Anfrage. Aber ich kann nicht wissen, was der Benutzer für diesen Fehler gemacht hat? Ist es möglich, mehr über diesen Fehler zu erfahren?

Hinweis: Ich verfolge die Zeit zwischen "AJAX call start" und "AJAX error". Die durchschnittliche Zeit beträgt 1500-2000 ms.

Edit: Wenn ich preventDefault() verwende, wo kann ich es hinstellen? Weil ich keine Klickfunktion etc. Registriere.

Bearbeiten2: Diese Seite sagt Folgendes:

  

Wir haben herausgefunden, dass dies passieren könnte, wenn die Ajax-Anfrage kommt   abgebrochen, bevor es abgeschlossen ist. Wir könnten das Problem reproduzieren, wenn wir   löste die Ajax Anfrage und dann sofort auf einen Link zu   navigieren Sie von der Seite weg. jQuery löst das Fehlerereignis aus, wenn der   Der Benutzer navigiert von der Seite entweder durch Aktualisieren, durch Klicken auf a   verlinken oder die URL im Browser ändern.

Aber ich konnte das Problem nicht reproduzieren, indem ich auf einen Link klicke, während AJAX geladen wird.

    
trante 29.07.2014, 21:42
quelle

1 Antwort

4

Gelöst.

Ich hatte das gleiche Problem. Dieses Problem tritt auf, wenn nach dem Ajax-Aufruf umgeleitet wird.

Fehlerhafter Code:

%Vor%

Im obigen Code gibt es eine Umleitung nach dem Ajax, die einen Fehler von Bereit-Zustand 0 ergibt.

Lösung:     Schreiben Sie Redirect, nachdem Sie eine Antwort erhalten haben. Ich habe komplett geschrieben.

%Vor%     
Bhavin Visariya 18.05.2015 14:07
quelle

Tags und Links