2010-04-23 101 views
1

我试图做一个web应用程序,你看到一个Ajax倒计时器。每当我按下一个按钮倒数应该回到30,并继续倒计时。AJAX - ASP.NET - 计时器延迟问题

现在的问题是,每当我按下按钮时,定时器继续倒计时一秒钟或2秒钟,大部分时间后定时器一直保持30秒。

的WebForm代码:

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:Label ID="Label1" runat="server" Text="geen verbinding"></asp:Label> 
     <br /> 
     <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> 
     <br /> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" /> 
    </Triggers> 
</asp:UpdatePanel> 
<asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick"> 
</asp:Timer> 

</form> 

代码背后:

static int timer = 30; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    Label1.Text = timer.ToString(); 
} 
protected void Timer1_Tick(object sender, EventArgs e) 
{ 
    timer--; 

} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    timer = 30;   
} 

希望有人知道问题是什么,是否有无论如何要解决这个问题。

在此先感谢!

+1

你在哪里开始你的计时器? – Younes 2010-04-23 08:06:25

+0

如果未定义,则自动在网站加载时启动。 – Julian 2010-04-23 08:26:22

+0

你想什么时候开始?只需点击按钮? – 2010-04-23 08:27:30

回答

1

你为什么不在ClientSide上实现定时器?你能解释为什么它必须是回调吗?它需要在服务器上做什么?

<script type="text/javascript" language="javascript"> 
var timer = 0; 
function resetTimer() { 
    timer = 0; 
    timerTick(); 
} 
function timerTick() { 
    var target = document.getElementById("timerResult"); 

    target.innerHTML = timer++; 
    window.setTimeout("timerTick()", 1000); 
} 
</script> 

和身体标签...

<body onload="timerTick();"> 

而且某处显示

<div id="timerResult" >timerResult</div> 

您JUSTY必须添加一个按钮chich调用resetTimer()。我会把它留给你

+0

我有一个计时器服务器端和客户端定时器需要由服务器定时器每秒更正一次。 – Julian 2010-04-23 08:33:48