Überprüfen Sie den status des einen jQuery-ajax-request
Scheint es, dass die Erfolge, Fehler und die komplette Rückrufe nur ausgelöst wird, wenn der ajax-request ist in der Lage zu bekommen einige Antwort vom server.
Also wenn ich den server Herunterfahren, wird der folgende Fehler-callback nicht ausgeführt, und die Anforderung schlägt fehl, schweigend.
$.ajax({
type: "GET",
url: "http://localhost:3000/",
dataType: "script",
success: function() {
alert("success");
},
error: function() {
alert("error");
}
});
Was ist der beste Weg, einen Fehler auslösen, wenn der server nicht erreicht werden kann überhaupt.
Bearbeiten - Von dem, was ich habe versucht zu Lesen und es scheint, dass jQuery built-in error-handling funktioniert nicht mit JSONP oder dataType: "script". Also ich werde versuchen, die Einstellung einer manuellen timeout.
Edit - Habe ein wenig Forschung und es sieht aus wie es nicht nur die ajax-Fehler-callback nicht funktionieren, aber Sie können nicht Abbrechen, ein ajax-request mit Datentyp-Skript oder jsonp, und diese Anfragen ignorieren Sie die timeout-Einstellung.
Gibt es eine alternative - die jquery-jsonp-plugin, aber es nutzt versteckte iframes, die ich lieber vermeiden. Also habe ich beigelegt, erstellen einer manuellen timeout-wie unten vorgeschlagen. Sie können nicht brechen Sie den Antrag, wenn es mal aus, was bedeutet, dass das Skript möglicherweise noch laden, auch nach dem timeout, aber zumindest etwas, das ausgelöst wird, wenn der server nicht verfügbar ist.
- Die Jquery-ajax-error-handling gebaut (siehe meine Antwort unten), die Sie verwenden können ajaxsetup gelten diese Optionen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine
setTimeout
, und deaktivieren Sie es mitclearTimeout
in der Prozedur complete.jQuery.ajax hat bereits eine
timeout
Präferenz und es sollte rufen Sie Ihre Fehler-handler sollte die request time out. Check-out die fantastische Dokumentation, die sagt — ich zitiere es hier, Hervorhebung von mir:und:
jquery-jsonp
.Verwenden readyState von XMLHttpRequest, um zu bestimmen, den status des ajax-request.
'readyState' speichert den status des XMLHttpRequest.
Wenn ich mich richtig erinnere, jQuery-exceptions wirft. Daher sollten Sie in der Lage zu arbeiten mit einem
try { ... } catch() { ... }
und Griff ihn dort an.Sie können die Jquery-AjaxSetup, um Ihre Fehlerbehandlung.
in ie8,verwenden können:
aber es kann nicht funktionieren, in chrome,firefox...
ich habe versucht,