2010-11-03 17 views
9

Mysql DB:JQuery.post() üzerinde zaman aşımı kontrol etmek mümkün mü?

function gotoDir(pmcat_id, pcat_id){ 
    $('#slideshowContainer').html('<img class="loader" src="/javascript/ajax-loader.gif">'); 
    $.post("/publish/includes/content.includes/functions.slideshow.php", 
     { updateSlideshowDir: 1, pmcat_id: pmcat_id, pcat_id: pcat_id }, 
     function(data){ 
      $('#pageSlideshow').html(data.content); 
     }, "json" 
    ); 
} 

'den bazı klasör bilgileri istemek için bu koda sahibim. Bazen posta isteği kötü internet bağlantısı nedeniyle zaman aşımına uğruyor. $ .Post() üzerinde bir zaman aşımı kontrolü ayarlamak mümkün mü? Örn: $ .post() öğesi daha sonra X ms kullanıyorsa, isteği yeniden yükleyin.

GÜNCELLEME: Bir çözüm buldum gibi görünüyor:

function gotoDir(pmcat_id, pcat_id){ 
    $('#slideshowContainer').html('<img class="loader" src="/javascript/ajax-loader.gif">'); 
    $.ajax({ 
     type:"post", 
     url:"/publish/includes/content.includes/functions.slideshow.php", 
     data: { updateSlideshowDir: 1, pmcat_id: pmcat_id, pcat_id: pcat_id }, 
     dataType: "json", 
     success:function(data) { 
      if (data == null){ 
      alert('ajax failed. reloading...'); 
      gotoDir(pmcat_id, pcat_id); 
     } else { 
      $('#pageSlideshow').html(data.content); 
     } 
     }   
    }); 
} 

Bunu yapmak için iyi bir yol mu? : S

+1

Hayır functions.slideshow.php aslında boş dönen eğer sonsuz isteklerde neden olacak olan veri var isteği zaman aşımına uğradı anlamına gelmez boş eşitse beri, Tamam değil! Eğer çok başarıya gotoDir() koyarsanız bu longpolling istemci tarafı komut dosyası için iyi bir şablon da olduğunu – ifaour

cevap

3

İsteğiniz timedout veya succeded olmadığını kontrol edebilirsiniz "ajaxComplete" ile daha sonra $.ajax() ve $.ajaxError(), kullanmalıdır.

Kaynak:

function gotoDir(pmcat_id, pcat_id) { 
    $('#slideshowContainer').html('<img class="loader" src="/javascript/ajax-loader.gif">'); 
    $.ajax({ 
     type: "POST", 
     url: "/publish/includes/content.includes/functions.slideshow.php", 
     data: { updateSlideshowDir: 1, pmcat_id: pmcat_id, pcat_id: pcat_id }, 
     dataType: "json", 
     timeout: 500, // in milliseconds 
     success: function(data) { 
      // process data here 
     }, 
     error: function(request, status, err) { 
      if(status == "timeout") { 
       gotoDir(pmcat_id, pcat_id); 
      } 
     } 
    }); 
} 

Eğer zaman aşımı seçeneğini ayarlamak gerekmez lütfen unutmayın: jQuery API

29

$ .ajax size soran ne başarmak için gereken tüm işlevlere sahiptir belirli bir süre sonra hata yöntemini tetiklemek için istemedikçe ayarlamak istediğiniz.

+0

Not :) –

İlgili konular