2009-09-29 55 views
1

我有一個返回一個整數(目前的信譽評分在社區網站的用戶)的功能,每3分鐘。這個數字通常會根據他們的評論和提交表決的方式而上升或下降。我想每隔30秒左右「輪詢」一次,看看它是否發生了變化,如果有,更新我正在顯示的號碼。試圖調用一個函數使用JavaScript

在另一個線程的StackOverflow,我發現這個JavaScript片段,看起來很有用:

function listen() { 
    $.get("/mylongrequestfile", {}, function(data) { 
    $("#mydiv").html(data); 
    listen(); // then launch again 
    })); 
}; 

難道我只是替換/ mylongrequestfile我的功能?我正在嘗試,但它不是很好。我如何使用此代碼或其他代碼片段來每30秒抓取並顯示此值?

回答

5

您可以使用

window.setInterval

重複調用的函數,每次調用該函數之間的固定時間延遲。

var intervalID = window.setInterval(yourfunctionname, 300); 

這會延遲300毫秒。

回調參數

的setInterval()將通過毫秒後期回調被叫到回調函數的數量,如果它希望別的東西作爲一個參數,它可以混爲一談。爲了避開這個問題,使用匿名函數來調用你的回調函數。

同樣的技術,如果你需要一個參數傳遞給你的回調函數,但需要它在Internet Explorer,它不支持在使​​用setInterval發送額外的參數工作()使用。

var intervalID = setInterval(function() { YourFunction(); }, 300); 
+0

我該怎麼辦的 「VAR」 在前面? ?現在,我使用 聽起來好像我可以使用 會這樣嗎? – bflora2 2009-09-29 10:45:30

+0

var用於javascript中的變量聲明。 – rahul 2009-09-29 11:04:50

+1

爲了避免任何人依靠它,這是值得一提的是,「遲到」的參數僅支持Mozilla的(它實際上是從上世紀90年代的Netscape瀏覽器中遺留下來的),而且還趨向於具有隨時間漂移遠離現實價值。見https://bugzilla.mozilla.org/show_bug.cgi?id=512259其中布蘭登·艾克說,它的時間來擺脫它,並https://bugzilla.mozilla.org/show_bug.cgi?id=394769哪裏做所以討論時間更長,價值的潛在不準確性被提及。最重要的是,不要使用它:-) – NickFitz 2009-09-29 11:44:39

0
var listener = function() { 
$.get("http://www.domain.tld/script/", {}, function(data) { 
    $("#mydiv").html(data); 
})); 
}; 

var interval = setInterval(listener, 30000);