2010-04-23 102 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