2012-02-14 109 views
0

我試圖每10分鐘倒計時(根據服務器時間,而不是客戶端)。每10分鐘(例如上午10點,上午10點10分,上午10點20分:上午),它需要刷新頁面並重新開始。jQuery定時器/倒計時使用服務器時間

我發現超時功能,但沒有使用服務器時間,我可以重置十。

有沒有人做過這樣的事情?

感謝

+0

你有沒有考慮簡單地設置在JavaScript中的時間以匹配服務器? – 2012-02-14 19:03:34

+0

; url = whatever.aspx」/> – Holystream 2012-02-14 19:25:01

+0

我已經想出了一個使用jQuery和服務器端值的解決方案。一旦它允許我發佈答案。 – 2012-02-14 20:29:11

回答

0

我最終在評論/答案和其他帖子中使用了一些想法,並提出了這個問題。

它每10分鐘倒計數(再次根據服務器)並顯示計時器值。當它達到「0」(-1:59)時,它將重新加載頁面並在10分鐘後重新開始。

未必是最乾淨的代碼,但它似乎工作得很好:

<script> 
var currentMin = @DateTime.Now.Minute; 
var currentSec = @DateTime.Now.Second; 
var minutesLeft = 0; 
var secondsLeft = 0; 

$(document).ready(function() { 
    setupTimer(); 
}); 

function setupTimer() { 
    var baseMins = 0; 
    if (currentMin >= 0 && currentMin <= 9) 
     baseMins = 10; 
    else if (currentMin >= 10 && currentMin <= 19) 
     baseMins = 20; 
    else if (currentMin >= 20 && currentMin <= 29) 
     baseMins = 30; 
    else if (currentMin >= 30 && currentMin <= 39) 
     baseMins = 40; 
    else if (currentMin >= 40 && currentMin <= 49) 
     baseMins = 50; 
    else if (currentMin >= 50 && currentMin <= 59) 
     baseMins = 60; 

    minutesLeft = (baseMins - 1) - currentMin; 
    secondsLeft = 60 - currentSec; 

    setInterval(decreaseTimer, 1000); 
} 

function decreaseTimer() { 
    secondsLeft--; 
    if (secondsLeft == -1) { 
     minutesLeft--; 
     secondsLeft = 59; 
    } 
    if (minutesLeft == -1 && secondsLeft == 59) { 
     location.reload(); 
    } 
    displayTimer(); 
} 

function displayTimer() { 
    if (minutesLeft == 0) 
     minutesLeft = "0"; 
    if (secondsLeft < 10) 
     secondsLeft = "0" + secondsLeft; 
    var timerDisplay = minutesLeft + ":" + secondsLeft; 
    $("#timer").text(timerDisplay); 
} 
</script> 
0

可以渲染計時器形式的服務器端開始,然後用它來控制服務器端的定時器邏輯。

E.g.

var timerStart = new Date("dateString");//Render this from server side 

然後在倒計時邏輯中使用timerStart變量。

一些在JavaScript中創建新日期的示例。

new Date(milliseconds) //milliseconds since 1970/01/01 
new Date(dateString) 
new Date(year, month, day, hours, minutes, seconds, milliseconds) 
0

我不是所有熟悉C#,所以原諒PHP示例,但概念是相同的。在JavaScript中,創建保存,直到下一個刷新的時間長度可變..

<script> 
    var firstRefresh=<?php echo $numberOfMiliSecondsToFirstRefresh; ?>; 
</script> 

那麼你可以設置你的第一個計時器的時間量刷新,並從那時起了,你可以每10分鐘刷新一次...