2012-02-14 112 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分钟刷新一次...