2010-12-28 35 views
37

Birinin bana yardım edip edemeyeceğini merak ediyorum. Veritabanından satırları çıkaran bir php sayfam var. Her 30 saniyede jquery/ajax ile aramak istiyorum. Ama aynı zamanda sayfayı herhangi bir zamanda arayabilmek istiyorum, böylece form üzerinden bir kayıt eklerseniz, form gönderdikten sonra sonuçları hemen güncellemek için sayfanın ajax olarak adlandırılmasını istiyorum. Birisi bana doğru yönde işaret edebilir mi yoksa bazı temel kodlar verebilir mi? Hala jquery/ajax için çok yeni. Bir zamanlayıcı şey ayarlamak istiyorsanızJQuery/Ajax zamanlayıcı ile görüşme

cevap

67

, sen JavaScript'in setTimeout veya setInterval yöntemleri kullanabilirsiniz: expression bir fonksiyonu ve timeout ve interval olduğunu

setTimeout (expression, timeout); 
setInterval (expression, interval); 

milisaniye cinsinden tam sayılardır. setTimeout, zamanlayıcıyı bir kez çalıştırır ve expression bir kez çalıştırır; setInterval ise interval her geçişinde expression'u çalıştırır.

Yani sizin durumunuzda o böyle bir şey çalışacak:
setInterval(function() { 
    //call $.ajax here 
}, 5000); //5 seconds 

Bildiğim kadarıyla Ajax giderse, jQuery en ajax() method bakın. Bir aralık çalıştırırsanız, kodunuzdaki diğer yerlerden aynı ajax() numaralı telefonu aramanızı engelleyen hiçbir şey kalmaz.

+0

Yanıt için teşekkürler! Yani ajax çağrısı yenilemek için yukarıdaki kodu her 5 saniyede bir yenilediğimde aynı sayfada bir kişi var. Birisi benim gönderdiğimde, kayıt bittikten sonra aynı setInterval fonksiyonunu çağırabilir ve Bir kerede aynı işlevin 2 örneği var mı? – John

+8

Ne isterseniz, her 30 saniyede bir * çalışacak * bir kullanıcı bir form gönderimini başlatacak * ve daha sonra yeni bir aralık oluşturacak kadar mı? Bu da mümkündür. 'setInterval()', aralığın kimliği olan bir tamsayı döndürür. Bu kimliği bir değişkende saklarsanız, ilerlemeyi durduracak olan 'clearInterval (id)' diyebilirsiniz. Ardından ajax form gönderiminizi tamamladıktan sonra 'setInterval()' çağrısını yeniden kurabilirsiniz. – treeface