2008-09-18 8 views
33

Die Dokumentation zeigt an, dass die error: option -Funktion verfügbar macht: XHR-Instanz, eine Statusnachrichtenzeichenfolge (in diesem Fall immer Fehler) und ein optionales von der XHR-Instanz zurückgegebenes Ausnahmeobjekt (Buch :

mit dem folgenden (in der $ Schnipsel Aufruf in Aktion) JQuery) konnte ich eine "ParserError" bestimmen, ich hatte und ein "Timeout" (da habe ich das Timeout: Option) Fehler

error: function(request, error){} 

Was sind andere Dinge, die Sie in der Fehleroption auswerten? Schließen Sie das optionale Ausnahmeobjekt ein?

EDIT: eine der Antworten zeigt alle Fehler Rückkehr ... mehr über das Lernen, was von Wert ist (zum Debuggen) in der XHR-Instanz und Ausnahmeobjekt wäre hilfreich

Dies ist ein kompletter $ Schnipsel Aufruf:

$.ajax({ 
type: "post", 
url: "http://myServer/cgi-bin/broker" , 
dataType: "text", 
data: { 
'_service' : 'myService', 
'_program' : 'myProgram', 
'start' : start, 
'end' : end 
}, 
beforeSend: function() { 
    $("#loading").removeClass("hide"); 
}, 
timeout: 5000, 
error: function(request,error) { 
    $("#loading").addClass("hide"); 
    if (error == "timeout") { 
    $("#error").append("The request timed out, please resubmit"); 
    } 
    else { 
    $("#error").append("ERROR: " + error); 
    } 
    }, 
    success: function(request) { 
    $("#loading").addClass("hide"); 
    var t = eval("(" + request + ")") ; 
    } // End success 
}); // End ajax method 

Danke für den Input

Antwort

22

Mit Blick auf die jQuery Quellcode ist, gibt es vier zurück Zustände, in additon Erfolg:

  • Timeout - wenn Ihre angegebene Timeout
  • überschritten
  • Fehler - http Fehler, wie 404
  • notmodified - wenn angeforderte Ressource nicht seit dem letzten Anfrage geändert wurde
  • ParserError - wenn eine xml/json Antwort schlecht
+3

auch wenn dataType: "json" und der json falsch gebildet ist –

+0

yep, das würde es auch tun. bearbeitet. – Zach

0

Sind Sie sicher, dass Antwort ist richtig? Einlesefehler bedeuten, dass es etw falsch mit Daten, die evaluted in Zeile var t = eval("(" + request + ")") ;

+0

Entschuldigung, meine Frage war nicht klar. Ich habe meine "parsererror" -Probleme durchgearbeitet ... Ich habe mich gefragt, welche anderen Informationen aus dem Fehler ermittelt werden können: option –

1

Das zweite Argument ist, die auf Ihre Fehler-Funktion übergeben wird, wird entweder die Zeichenfolge "timeout" "parserror" "error" oder "notmodified". Die dritte wird das Ausnahmeobjekt sein. Dieses Objekt kann beim Debuggen hilfreich sein.

+0

könnten Sie Ihre Antwort aktualisieren, um die hilfreiche Debug-Informationen zu erklären, die aus dem Ausnahmeobjekt –

4

Dies ist eine Nebensache, aber ich denke, es gibt einen Fehler im Code, den Sie eingereicht haben. Die Linie:

if (error = "timeout") { 

sollte mehr haben Gleichheitszeichen drin:

if (error == "timeout") { 
+0

guten Fang erhalten werden können, bearbeitet den Beitrag. Es ist eine Weile her, seit ich das gepostet habe, aber ich denke, das war nur ein Tippfehler. danke für die Antwort –

43

ich die Anfrage nützlicher als die Fehler finden.

error:function(xhr,err){ 
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status); 
    alert("responseText: "+xhr.responseText); 
}

xhr ist XmlHttpRequest.
readyState Werte sind 1: laden, 2: geladen, 3: interaktiv, 4: abgeschlossen.
Status ist die HTTP-Statusnummer, d. H. 404: nicht gefunden, 500: Serverfehler, 200: OK.
response ist die Antwort vom Server - dieser Text oder JSON aus dem Web-Dienst sein könnte, oder HTML-Code aus dem Web-Server.

+0

nette Antwort, danke –