$.ajax({
url: "test.html",
error: function(){
//do something
},
success: function(){
//do something
}
});
Czasami success
funkcja działa dobrze, a czasem nie.
Jak ustawić limit czasu dla tego żądania ajax? Na przykład 3 sekundy, jeśli upłynie czas, pokaż błąd.
Problem polega na tym, że żądanie ajax zawiesza blok do momentu zakończenia. Jeśli serwer nie działa przez pewien czas, nigdy się nie skończy.
,
tam po}
.Odpowiedzi:
Proszę przeczytać
$.ajax
dokumentację , jest to omawiany temat.Możesz zobaczyć, jaki rodzaj błędu został zgłoszony, uzyskując dostęp do parametru textStatus
error: function(jqXHR, textStatus, errorThrown)
opcji. Dostępne opcje to „przekroczenie limitu czasu”, „błąd”, „przerwanie” i „analiza składni”.źródło
Oto kilka przykładów, które pokazują ustawianie i wykrywanie limitów czasu w starych i nowych paradygmatach jQuery.
Live Demo
Obiecuj dzięki jQuery 1.8+
jQuery 1.8+
jQuery <= 1.7.2
Zauważ, że parametr textStatus (lub jqXHR.statusText ) poinformuje cię, jaki był błąd. Może to być przydatne, jeśli chcesz wiedzieć, że awaria została spowodowana przekroczeniem limitu czasu.
src: http://api.jquery.com/jQuery.ajax/
źródło
$.ajax().fail()
i$.ajax().error()
?Możesz użyć
timeout
ustawienia w opcjach ajax, takich jak to:Przeczytaj wszystko o opcjach ajax tutaj: http://api.jquery.com/jQuery.ajax/
Pamiętaj, że gdy nastąpi przekroczenie limitu czasu,
error
moduł obsługi jest wyzwalany, a niesuccess
moduł obsługi :)źródło
użyj w pełni funkcjonalnej
.ajax
funkcji jQuery. porównaj na przykład z https://stackoverflow.com/a/3543713/1689451 .bez testowania, po prostu łącząc kod z przywoływanym pytaniem SO:
źródło