$.ajax({
url: "test.html",
error: function(){
//do something
},
success: function(){
//do something
}
});
Manchmal success
funktioniert die Funktion gut, manchmal nicht.
Wie stelle ich das Zeitlimit für diese Ajax-Anfrage ein? Beispiel: 3 Sekunden, wenn die Zeit abgelaufen ist, wird ein Fehler angezeigt.
Das Problem ist, dass Ajax Request den Block einfriert, bis er fertig ist. Wenn der Server für einige Zeit nicht verfügbar ist, wird er niemals enden.
,
nach dem}
.Antworten:
Bitte lesen Sie die
$.ajax
Dokumentation , dies ist ein behandeltes Thema.Sie können sehen, welche Art von Fehler ausgelöst wurde, indem Sie auf den Parameter textStatus der
error: function(jqXHR, textStatus, errorThrown)
Option zugreifen . Die Optionen sind "Timeout", "Fehler", "Abbruch" und "Parsererror".quelle
Hier einige Beispiele, die das Festlegen und Erkennen von Zeitüberschreitungen in den alten und neuen Paradigmen von jQuery veranschaulichen.
Live Demo
Versprechen Sie mit jQuery 1.8+
jQuery 1.8+
jQuery <= 1.7.2
Beachten Sie, dass der Parameter textStatus (oder jqXHR.statusText ) Sie über den Fehler informiert. Dies kann hilfreich sein, wenn Sie wissen möchten, dass der Fehler durch eine Zeitüberschreitung verursacht wurde.
src: http://api.jquery.com/jQuery.ajax/
quelle
$.ajax().fail()
und$.ajax().error()
?Sie können die
timeout
Einstellung in den Ajax-Optionen wie folgt verwenden:Lesen Sie hier alles über die Ajax-Optionen: http://api.jquery.com/jQuery.ajax/
Denken Sie daran, dass bei einem Timeout der
error
Handler ausgelöst wird und nicht dersuccess
Handler :)quelle
Verwenden Sie die voll ausgestattete
.ajax
jQuery-Funktion. Ein Beispiel finden Sie unter https://stackoverflow.com/a/3543713/1689451 .Ohne zu testen, führen Sie einfach Ihren Code mit der SO-Frage zusammen, auf die verwiesen wird:
quelle