2016-05-14 46 views
0

我有JavaScript,每2.5秒刷新部分通過JS請求的軌道生成視圖,以更新簡單的進度欄。用戶離開頁面後,定時Ajax進程繼續

function refreshPage(){ 
    $.ajax({ 
     type:"GET", 
     dataType:"script" 
    }) 
} 

setInterval(function(){ 
    refreshPage(); 
}, 2500); 

出於某種原因,即使在用戶離開頁面後,這種情況仍然存在。這在發展和生產中都會發生。停止它的唯一方法是讓用戶轉到其他頁面並使用F5進行刷新。

這可能是簡單的我很想念。我是否需要某種「進度條完成,停止發送JS請求」的方法?

+0

這不應該發生。加載新頁面時,所有腳本都應該停止。 – Barmar

+0

聽起來不錯,但它正在發生。 Rails可能會做一些奇怪的事情? – Chakron

+0

Rails無法改變瀏覽器的工作方式。 – Barmar

回答

0

您將要使用clearInterval(intervalID),如所描述的here,因爲您需要明確停止使用setInterval()啓動的計時器。

+0

他將把clearInterval()調用放在哪裏? – Barmar

+0

這對我有用。 refreshPage調用檢查進度條ID的存在和值。如果進度條達到0或用戶導航離開頁面,刷新將通過clearInterval調用停止。 – Chakron

+0

@Barmar - 這是一個公平的問題。但是,答案取決於開發人員的設計。我傾向於在我的javascript中使用OO設計,所以我傾向於有一個負責啓動和停止計時器的類,具體取決於應用程序中發生的情況(主要在客戶端上)。但是,我知道其他人對他們的js設計使用更多功能性的方法,在這種情況下,我想答案會有所不同。所以,我很抱歉地說,我認爲答案是事實,*取決於*。 – jvillian