Wie kann der Benutzer den tatsächlichen Netzwerkfehler anzeigen, wenn er XMLHttpRequest verwendet?

9

XMLHttpRequest.status ist normalerweise nur "0", wenn bei dem Versuch, einen Ajax / XMLHttpRequest-Aufruf auszuführen, ein Netzwerkfehlertyp aufgetreten ist. Aber sicherlich sollte es eine Möglichkeit geben, dem Benutzer genau zu sagen, was der Netzwerkfehler war, z. ob die DNS-Auflösung fehlgeschlagen ist oder die Verbindung aktiv abgelehnt wurde oder ob die Verbindung hergestellt wurde, aber abgebrochen wurde, bevor eine gültige HTTP-Antwort gesendet wurde? I.E. gibt zumindest einige zusätzliche Informationen in der JavaScript-Konsole aus, z. B.

SCRIPT7002: XMLHttpRequest: Netzwerkfehler 0x2efd, konnte die Operation wegen Fehler 00002efd nicht abschließen.

Aber es ist kaum sehr freundlich, und ich kann nicht sehen, wie man diese Information von Javascript abfragt, um in etwas zu übersetzen, das ich dem Benutzer zeigen kann.

Es macht mir nichts aus, wenn es für verschiedene Browser anders implementiert werden muss, aber ich habe momentan Schwierigkeiten, diese Informationen überhaupt abzurufen.

BTW zumindest möchte ich unterscheiden können:

  • a) keine Internetverbindung (z. B. WLAN getrennt)
  • b) DNS-Fehler (Name kann nicht aufgelöst werden)
  • c) konnte keine TCP-Verbindung zum Server aufbauen (entweder aktiv abgelehnt oder abgelaufen)
  • d) ungültige Antwort (keine HTTP-Antwort)
  • e) SSL-Zertifikatfehler

In jedem Fall, in dem eine gültige HTTP-Antwort zurückgegeben wird, aber nicht der Status 200 OK ist, ist es in Ordnung - ich kann eine sinnvolle Fehlermeldung erhalten, die dem Benutzer angezeigt wird. Aber für alles andere scheint es keine Möglichkeit zu geben, die verschiedenen möglichen Arten von Fehlern zu unterscheiden. In meiner Anwendung ist der Benutzer dafür verantwortlich, die Adresse anzugeben, an die die Ajax-Anforderungen gesendet werden sollen. Wenn sie es falsch verstehen, möchte ich ihnen mitteilen können, warum die Anforderung fehlschlägt.

    
Dylan Nicholson 18.03.2015, 00:07
quelle

1 Antwort

0

Sie sollten sich besser auf das onerror-Ereignis der XMLHttpRequest-Instanz

einlassen %Vor%

Es kann irgendwie schwierig sein, zu beurteilen, wie genau der Fehler aufgetreten ist, versuchen Sie einfach e.message oder etwas anderes.

Beachten Sie, dass ein Statuscode! = 200 nicht das onerror-Ereignis auslöst, sondern das onload-Ereignis. handle vorsichtig damit

    
Xin Liu 15.08.2017 09:56
quelle

Tags und Links