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

  • iBand IguJoo

    iBand IguJoo

    25 AĞUSTOS 2006
  • pilslajt

    pilslajt

    20 HAZİRAN 2008
  • SlimaksClass

    SlimaksClass

    15 Kasım 2010