$ .Ajax hatasının zaman aşımı olup olmadığını belirleme


205

Ben büyüsünü kullanıyorum jQuery.ajax( settings ).

Ancak, kimse zaman aşımı ayarı ile çok oynadı olup olmadığını merak ediyorum?

Temelde bir istek için yerel saati dikte etmek olduğunu biliyorum, ancak zaman aşımına ulaşıldığında bir şey tetikleyebilir mi? Yoksa sadece bir yanıt dinlemeyi bırakıyor mu?

JQuery sitesini okurken, hiçbir argüman geçirilmediğini görebiliyorum, bu yüzden tek bir kapasiteye sahip basit bir ayar gibi görünüyor. Hangisi iyi.

Ancak, zaman aşımına ulaşıldığında bir uyarı veya bazı işlevleri tetiklemek istiyorum. Bu durumda hata ayarının tetiklenmediğini görebiliyorum.

İşte snippet'im:

$("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); }
   });

});

Zaman aşımı ile nasıl daha fazla çalışacağını bilen var mı?

Yanıtlar:


356

Hata olayı işleyiciniz zaman aşımı oluştuğunda üç argümanı (xmlhttprequest, textstatus ve message) alırsa, durum argümanı 'zaman aşımı' olacaktır.

Başına jQuery belgelerine :

İkinci bağımsız değişken için olası değerler (null dışında) "zaman aşımı", "hata", "değiştirilmemiş" ve "ayrıştırıcı" dır.

Hatanızı buna göre halledebilirsiniz.

Bunu gösteren bu kemanı yarattım .

$.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 ile ajax çağrılarını test edebilirsiniz - cevap vermeden önce 2 saniye bekleyecektir. Zaman aşımı ayarını 1 saniyeye koydum, bu yüzden hata yapmalı ve 'zaman aşımı' metnini bir hata işleyicisine iletmelidir.

Bu yardımcı olur umarım!


3
Çalıştığına sevindim! Evet, bu durum değerlerini dokümantasyonda saklıyorlar.
David Hoerster

102
Belgelerde çok fazla saklanıyorlar.
Aaron

4
@JochemKuijpers Fiddler 2 saniye bekleyecek, böylece 1 saniyelik zaman aşımı gerçekleşecek. Oku ....
Rickjaah

2
X, t, m değişkenlerinin ne olduğunu açıklayabilir misiniz?
bart

3
(x) mlhttprequest, (t) extstatus ve (m)
essage
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.