Überprüft den Status einer jQuery ajax-Anfrage

8

Es scheint, dass der Erfolg, der Fehler und die vollständigen Rückrufe nur ausgelöst werden, wenn die Ajax-Anfrage eine Antwort vom Server erhalten kann.

Wenn ich also den Server herunterfahre, wird der folgende Fehlerrückruf nicht ausgeführt und die Anforderung schlägt automatisch fehl.

%Vor%

Was ist der beste Weg, um einen Fehler zu melden, wenn der Server überhaupt nicht erreichbar ist.

Bearbeiten - Von dem, was ich versucht habe und gelesen habe, scheint es, dass jQuerys integrierte Fehlerbehandlung nicht mit JSONP oder dataType funktioniert: "script". Also werde ich versuchen, eine manuelle Zeitüberschreitung einzustellen.

Bearbeiten - Habe ein bisschen mehr recherchiert und es sieht so aus, als ob der Ajax Fehler Callback nicht funktioniert, aber man kann eine Ajax Anfrage nicht mit dataType Script oder jsonp abbrechen, und diese Anfragen ignorieren die Timeout Einstellung.

>

Es gibt eine Alternative - das jquery-jsonp-Plugin, aber es verwendet versteckte iframes, die ich lieber vermeiden würde. Also habe ich mich darauf festgelegt, ein manuelles Timeout zu erstellen, wie unten vorgeschlagen. Sie können die Anforderung nicht abbrechen, wenn das Zeitlimit überschritten wird. Dies bedeutet, dass das Skript möglicherweise auch nach dem Zeitlimit noch geladen wird, aber zumindest wird etwas ausgelöst, wenn der Server nicht verfügbar ist.

    
Seth Archer Brown 02.07.2010, 04:26
quelle

6 Antworten

7

Sie können eine setTimeout verwenden und sie mit clearTimeout im vollständigen Handler.

%Vor%     
Matthew Flaschen 02.07.2010, 04:29
quelle
5

jQuery.ajax hat bereits eine timeout Präferenz und sollte Ihren Fehlerhandler aufrufen, sollte die Anfrage eine Zeitüberschreitung haben. Schauen Sie sich die fantastische Dokumentation an , die besagt - ich würde es hier zitieren, meine Betonung:

  

timeoutNumber

     

Legen Sie eine lokale Zeitüberschreitung (in Millisekunden) für die Anforderung fest ...

und:

  

error (XMLHttpRequest, textStatus, errorThrown) Function

     

Eine Funktion, die aufgerufen wird, wenn die Anforderung fehlschlägt. Der Funktion werden drei Argumente übergeben: Das XMLHttpRequest-Objekt, eine Zeichenfolge, die den Typ des aufgetretenen Fehlers beschreibt, und ein optionales Ausnahmeobjekt, falls eines aufgetreten ist. Mögliche Werte für das zweite Argument (neben null) sind "timeout" , "error", "notmodified" und "parsererror". Dies ist ein Ajax-Ereignis.

    
Evadne Wu 02.07.2010 04:40
quelle
1
%Vor%

Verwenden Sie readyState von XMLHttpRequest, um den Status der Ajax-Anfrage zu ermitteln.    'readyState' enthält den Status von XMLHttpRequest.

  • 0: Anfrage nicht initialisiert
  • 1: Serververbindung hergestellt
  • 2: Anfrage erhalten
  • 3: Verarbeitungsanforderung
  • 4: Anfrage beendet und Antwort ist bereit
josepainumkal 08.11.2017 20:40
quelle
0

Wenn ich mich richtig erinnere, löst jQuery Ausnahmen aus. Daher sollten Sie in der Lage sein, mit einem try { ... } catch() { ... } zu arbeiten und es dort zu behandeln.

    
Skudd 02.07.2010 04:30
quelle
0

Sie können Jquery's AjaxSetup verwenden, um Ihre Fehlerbehandlung zu behandeln.

%Vor%     
Sphvn 02.07.2010 04:42
quelle
0

in ie8, kann verwenden:

%Vor%

aber es kann nicht auf Chrom, Firefox funktionieren ... Ich habe es versucht

    
Koerr 02.07.2010 04:52
quelle

Tags und Links