Я использую магию jQuery.ajax (settings)
.
Однако мне интересно, кто-нибудь много играл с настройкой тайм-аута?
Я знаю, что это в основном для указания местного времени для запроса, но может ли он вызвать что-нибудь, если тайм-аут достигнут? Или он просто перестает слушать ответ?
Читая сайт jQuery, Я вижу, что аргументы не передаются, поэтому это похоже на простую настройку с одной возможностью. Что хорошо.
Но я бы хотел вызвать оповещение или какую-либо функцию, если время ожидания истекло. Я вижу, что установка ошибки не срабатывает, в этом случае.
Вот мой фрагмент:
$("form#testform").submit(function(){
var allFormValues = $("form#testform").serialize();
$.ajax({
cache:false,
timeout:8000, // I chose 8 secs for kicks
type:"POST",
url:"someurl.php",
data:allFormValues,
error:function(){ alert("some error occurred") },
success:function(response){ alert(response); }
});
});
Кто-нибудь знает, как работать больше с таймаутом?
Если ваш обработчик событий ошибки принимает три аргумента (xmlhttprequest, textstatus и message), когда происходит тайм-аут, то в качестве аргумента состояния будет «тайм-аут».
Согласно документации jQuery :
Возможные значения для второго аргумент (помимо null) - это "тайм-аут", "ошибка", "без изменений" и "parsererror".
Тогда вы сможете соответствующим образом обработать свою ошибку.
Я создал эту скрипку , которая демонстрирует это.
$.ajax({
url: "/ajax_json_echo/",
type: "GET",
dataType: "json",
timeout: 1000,
success: function(response) { alert(response); },
error: function(xmlhttprequest, textstatus, message) {
if(textstatus==="timeout") {
alert("got timeout");
} else {
alert(textstatus);
}
}
});
С помощью jsFiddle вы можете тестировать вызовы ajax - он будет ждать 2 секунды перед ответом. Я установил тайм-аут на 1 секунду, поэтому он должен выдать ошибку и передать текстовый статус «тайм-аут» обработчику ошибок.
Надеюсь, это поможет!