Я использую магию 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 и сообщение), когда происходит тайм-аут, статус arg будет "тайм-аутом".
Возможные значения для второго аргумент (кроме нуля) - это "тайм-аут", "ошибка", "немодифицировано" и "Parsererror".
Таким образом, вы можете обрабатывать свою ошибку.
Я создал этот fiddle, который демонстрирует это.
$.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 вы можете проверить аякс-вызовы - он будет ждать 2 секунды, прежде чем отвечать. Я установил значение тайм-аута на 1 секунду, поэтому он должен выполнить ошибку и передать текстовый статус "timeout" обработчику ошибок.
Надеюсь, это поможет!