2014-01-09 176 views
2

我有一個函數,我希望每30秒運行一次。這工作正常每30秒運行ajax並顯示倒數計時器

$(document).ready(function(){ 
    setInterval(function() { 
     jQuery.ajax({ 
      type: "GET", 
      url: "loaddata.php", 
      dataType:"json", 
      success:function(response){ 
       if (response) { 
        // Process 
       } 
       else { 
        // Process 
       } 
      } 

     }); 
    }, 30000); 
}); 

但我想弄清楚如何顯示與setInterval內聯的倒數計時器。換句話說,它應該顯示ajax運行之前剩餘的秒數,一旦函數運行,它應該重置定時器並從30秒開始倒計時。這個過程會不斷重複。我發現了倒計時定時器的幾個例子,但我不知道如何與ajax請求同步並重置它。

任何幫助,非常感謝!

+0

只是@dhsto的解決方案的補充,但沒有(全局)var和'setIntveral()'。相反,我使用了一個命名函數和'setTimeout()' - [小提琴](http://jsfiddle.net/63vQW/) – Andreas

回答

7

只需每秒運行一個函數,並有一個計數器,它可以倒計數到0.當它達到0時,運行你的ajax代碼並重置計數器。像這樣:

var count = 30; 
setInterval(function() { 
    count--; 

    // update timer here 

    if (count === 0) { 
     count = 30; 
     // ajax code here 
    } 
}, 1000); 

在你的計時器最初顯示的值設置爲30,那麼這將顯示出29,28,27,......,2,1,0,29,28等。

+0

完美的作品,謝謝! –