2

基本上我有一個刷新按鈕,當用戶點擊刷新按鈕時,它會調用Web服務,獲取數據並刷新一個div容器以顯示新數據。JQuery - 每2秒點擊一次按鈕

但我想,而無需用戶單擊刷新按鈕,更新的div容器....

我希望如何jQuery的點擊我的每一個按鈕2秒鐘,而無需刷新整個頁面?還是有更好的方法來做到這一點?

+0

您是否已經嘗試過使用setInterval並只是在回調中調用webservice? – kinakuta

回答

3

你可以使用setInterval運行功能,每兩秒鐘:

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

然後讓被調用函數調用按鈕的點擊處理程序。理想情況下,您可以直接調用點擊處理程序,而不必說$x.click()

使用setTimeout可能是一個更好的主意:

執行一段代碼或指定的延遲後的功能。

然後,回調函數會調用點擊處理程序,當這個處理完成時,它會再次調用setTimeout來觸發它自己。這種方法將使您的定時事件不會互相超出。由於所有代碼都是您的,因此您可以對其進行重構,以便$.ajax成功和錯誤回調(或可能是complete回調)可以重新啓動計時器。

+0

setTimeout的想法是一個很好的想法。 – kinakuta

0

您可以使用setInterval命令,使用乾淨的舊JavaScript執行此操作。這裏有一個例子:

//Run updates every 2 seconds 
var x=setInterval(doUpdates,2000); 
function doUpdates() { 
    //Do whatever updating you need 
} 

如果你想在這裏停止自動更新,可以使用命令clearInterval(x);

如果刷新數據需要很長時間,則可以使每個請求之間的間隔爲2秒。

function doUpdates() { 
    //Do whatever updating you need 
    $.ajax({ 
    'success':function() { 
     setTimeout(doUpdates,2000); 
    } 
    }); 
} 

對於第二個示例,您可以在刷新完成後直接放置setTimeout。

+0

.Ajax做什麼? SetTimeout似乎沒有超時? – 001

+0

我假設你使用AJAX來收集數據。如果沒有,就忽略那個部分。 – Kranu

4

可以使用的setInterval的時間每個給定時段後調用一個函數:

setInterval(function(){ 
    $("#myBtn").click(); 
},2000); 

這將每2秒調用myBtn元素上的click事件。

要小心,如果您發送ajax請求,它可能有時需要更多時間來接收響應,而不是您的間隔。這可能會導致一些問題。所以請考慮使用遞歸調用。(從ajax回調函數調用點擊函數)

+0

我試過了,它似乎沒有工作? 001

+0

您是否收到任何錯誤?在你的代碼中有 – Headshota

+1

你指的是$('mybutton'),如果它是你引用的id,你必須使用$('#mybutton') – Headshota