Определите, если $.ошибка 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 191

1 ответ:

если ваш обработчик событий ошибок принимает три аргумента (xmlhttprequest, textstatus и message), когда происходит тайм-аут, статус arg будет "тайм-аут".

на документация jQuery:

возможные значения для второго аргумент (кроме 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' обработчику ошибок.

надеюсь, что это помогает!