Определите, если $.ошибка AJAX-это тайм-аут
Я использую магию 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); }
});
});
кто-нибудь знает, как работать с тайм-аута?
1 ответ:
если ваш обработчик событий ошибок принимает три аргумента (xmlhttprequest, textstatus и message), когда происходит тайм-аут, статус arg будет "тайм-аут".
возможные значения для второго аргумент (кроме null) - это " тайм-аут", "error", "notmodified" и "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 секунду, поэтому он должен ошибиться и передать обратно textstatus 'timeout' обработчику ошибок.
надеюсь, что это помогает!