基本上我有一個刷新按鈕,當用戶點擊刷新按鈕時,它會調用Web服務,獲取數據並刷新一個div容器以顯示新數據。JQuery - 每2秒點擊一次按鈕
但我想,而無需用戶單擊刷新按鈕,更新的div容器....
我希望如何jQuery的點擊我的每一個按鈕2秒鐘,而無需刷新整個頁面?還是有更好的方法來做到這一點?
基本上我有一個刷新按鈕,當用戶點擊刷新按鈕時,它會調用Web服務,獲取數據並刷新一個div容器以顯示新數據。JQuery - 每2秒點擊一次按鈕
但我想,而無需用戶單擊刷新按鈕,更新的div容器....
我希望如何jQuery的點擊我的每一個按鈕2秒鐘,而無需刷新整個頁面?還是有更好的方法來做到這一點?
你可以使用setInterval
運行功能,每兩秒鐘:
重複調用的函數,每次調用該函數之間的固定時間延遲。
然後讓被調用函數調用按鈕的點擊處理程序。理想情況下,您可以直接調用點擊處理程序,而不必說$x.click()
。
使用setTimeout
可能是一個更好的主意:
執行一段代碼或指定的延遲後的功能。
然後,回調函數會調用點擊處理程序,當這個處理完成時,它會再次調用setTimeout
來觸發它自己。這種方法將使您的定時事件不會互相超出。由於所有代碼都是您的,因此您可以對其進行重構,以便$.ajax
成功和錯誤回調(或可能是complete
回調)可以重新啓動計時器。
setTimeout的想法是一個很好的想法。 – kinakuta
您可以使用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。
可以使用的setInterval的時間每個給定時段後調用一個函數:
setInterval(function(){
$("#myBtn").click();
},2000);
這將每2秒調用myBtn元素上的click事件。
要小心,如果您發送ajax請求,它可能有時需要更多時間來接收響應,而不是您的間隔。這可能會導致一些問題。所以請考慮使用遞歸調用。(從ajax回調函數調用點擊函數)
您是否已經嘗試過使用setInterval並只是在回調中調用webservice? – kinakuta