Es scheint, dass der Erfolg, Fehler und vollständige Rückrufe nur ausgelöst werden, wenn die Ajax-Anfrage eine Antwort vom Server erhalten kann.Überprüfen Sie den Status einer jQuery Ajax-Anforderung
Wenn ich also den Server heruntergefahren habe, wird der folgende Fehlerrückruf nicht ausgeführt und die Anforderung schlägt im Hintergrund fehl.
$.ajax({
type: "GET",
url: "http://localhost:3000/",
dataType: "script",
success: function() {
alert("success");
},
error: function() {
alert("error");
}
});
Was ist der beste Weg, um einen Fehler zu werfen, wenn der Server überhaupt nicht erreicht werden kann.
Bearbeiten - Von was ich versucht habe und gelesen, es scheint, dass jQuery integrierte Fehlerbehandlung nicht mit JSONP oder dataType funktioniert: "Skript". Also werde ich versuchen, eine manuelle Zeitüberschreitung einzustellen.
Edit - Hat ein wenig mehr Forschung und es sieht aus wie nicht nur die Ajax-Fehler Callback nicht funktioniert, aber Sie können eine Ajax-Anfrage mit DataType-Skript oder Jsonp nicht 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. Daher 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.
jQuerys ajax hat eine integrierte Fehlerbehandlung (siehe meine Antwort unten). Sie können ajaxsetup verwenden, um diese Optionen anzuwenden. – Sphvn