SORU
19 ŞUBAT 2011, CUMARTESİ


Nasıl AJAX isteği belirli Aralıklarla ateş?

<meta http-equiv="Refresh" Content="5">

Bu komut, ya da her 5 saniye sonra sayfayı yenile yeniden yükler. Ama bunu yapmak için jQuery ve AJAX çağrısı kullanarak istiyorum. Mümkün mü?

CEVAP
19 ŞUBAT 2011, CUMARTESİ


Diğerleri belirttiği gibi setTimeout ve setınterval işinizi görecektir. Paul İrlandalı tarafından bu mükemmel videodan öğrendiğim biraz daha gelişmiş bir teknik vurgulamak istedim: http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/

(Yavaş bir bağlantı, bir HTTP isteği gibi) en iyi setınterval kullanmak için değil daha tekrarlama aralığı daha alarak sonunda belki bir periyodik görevler için). İlk istek tamamlamadı ve bir tane başlarsanız, paylaşılan kaynakları tüketen, birden çok kişi olduğu bir durum sonunda birbirlerini açlıktan olabilir. Son tamamlanıncaya kadar, sonraki istek programı için bekleyen bu sorunu önleyebilirsiniz:

// Use a named immediately-invoked function expression.
(function worker() {
  $.get('ajax/test.html', function(data) {
    // Now that we've completed the request schedule the next one.
    $('.result').html(data);
    setTimeout(worker, 5000);
  });
})();

Basitlik için zamanlama için başarı geri kullandım. Bu işin kötü yanı da başarısız bir istek güncellemeleri duracak. Bunu önlemek için eksiksiz geri yerine kullanabilirsiniz:

(function worker() {
  $.ajax({
    url: 'ajax/test.html', 
    success: function(data) {
      $('.result').html(data);
    },
    complete: function() {
      // Schedule the next request when the current one's complete
      setTimeout(worker, 5000);
    }
  });
})();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 1881 Animation

    1881 Animati

    5 EKİM 2013
  • sdasmarchives

    sdasmarchive

    2 HAZİRAN 2010
  • sknbp

    sknbp

    16 Kasım 2006