2016-07-22 135 views
-1
$(document).ready(function() { 

    function refreshbids() { 
     var element = $("#biddingdiv"); 
     element.load("bids.php?id=<? echo $uid; ?>&init=1&auctionid=<? echo $auctionid; ?>&"+(new Date()).getTime()); 
    } 


    refreshbids(); 

    setInterval(refreshbids, 5000); 


}); 

當我們離開那個頁面並返回它時,看起來像bids.php加載得更快,即間隔緩存沒有被清除。我們試過了window.clearInterval(refreshbids);但它沒有工作。請幫忙。jquery ajax setinterval問題

我們是否應該在負載開始時清除間隔或檢查它是否不清楚並清除它?

感謝

+0

_it似乎bids.php得到加載更快_? – brk

+0

你的'.load'函數做什麼?默認https://api.jquery.com/load-event/你傳遞的是一個回調,當元素被加載或者我丟失東西時會被處理? – fehrlich

+0

Xzen - 它將bids.php加載到#biddingdiv,應該清楚 – Outlaw011

回答

0

這完全取決於你想要做什麼!在你展示的代碼中,refreshbids()是第一個(總是...)調用一次,然後它被設置爲每隔5秒調用一次。  這個不定時的第一個電話很有可能是你說它的原因是「加載得更快」當你「返回」頁面: 這個函數將立即被調用。  在這種情況下調用clearInterval()將無關緊要: 函數isn ’ t被任何類型的定時器調用(第一次...)。

FYI:  因爲事情的頁面加載後即刻的狀態可以「有點冒險,和具體的瀏覽器,」您可能希望在頁面中使用準備例程setTimeout()呼叫消防電話例如,以100毫秒爲單位到refreshbids()。  然後這個一次性子程序可能導致後續的重複調用發生。 (並且,不會,你永遠不會clearInterval ...)那「人類不明顯的第二分之一」將實時發生的時間活動的開始稍微移動頁面就緒,並且這個可以避免很多計時問題。

+0

嗨,邁克。我們需要的是在頁面加載時在#biddingdiv中加載bids.php,然後每5秒刷新一次。現在我們遇到的主要問題是,當我們重新加載一個容納其中的#biddingdiv的容器div時,#biddingdiv會一直執行並加載頁面bids.php,並從之前查看過的頁面加載bids.php。就好像某些日誌沒有被清除一樣。 – Outlaw011

+0

基本上,我們訪問的每個容器div都跟蹤所有先前查看過的biddingdiv的...我們嘗試使用clearInterval但沒有任何成功。 – Outlaw011

+0

我不知道你的意思是什麼*「瘋了。」*使用瀏覽器調試器**查看**正在請求並返回的內容。考慮記錄你傳遞給'element.load()'的實際字符串。每次間隔結束時添加日誌註釋。一旦你能夠**看到這樣的錯誤,通常很容易找到並修復它。在此之前,你在黑暗中拍攝。 –

0

顯然,我設法解決與此有關)$(文件)的頂部。就緒(函數({:

for(i=0; i<9999; i++) 
{ 
    window.clearInterval(i); 
} 

現在,我不知道什麼是對的setInterval的價值觀,以及如何有效這個如果你有任何修復/更好的想法,讓我知道。