2010-04-23 6 views
1

J'essaye de faire une application web où vous voyez un compte à rebours Ajax. Chaque fois que j'appuie sur un bouton, le compte à rebours devrait revenir à 30 et continuer à compter. Maintenant, le problème est que chaque fois que j'appuie sur le bouton, la minuterie continue de compter à rebours pendant une seconde ou deux et la plupart du temps, après que la minuterie reste sur 30 pour s'allonger.AJAX - ASP.NET - Problème de temporisation

code 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> 

code Derrière:

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;   
} 

quelqu'un Hope sait quel est le problème et s'il y a de toute façon de résoudre ce problème.

Merci d'avance! Pourquoi n'implémentez-vous pas entièrement le Timer sur le ClientSide?

+1

Où commencez-vous votre minuterie ?? – Younes

+0

S'il n'est pas défini, il démarre automatiquement au chargement du site. – Julian

+0

Quand voulez-vous que ça commence? Juste sur le bouton, cliquez sur? –

Répondre

1

Pouvez-vous expliquer pourquoi cela doit être un rappel? Que doit-il faire sur le serveur?

<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> 

Et dans la balise body ...

<body onload="timerTick();"> 

Et quelque part pour afficher

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

Vous justy devez ajouter un chich bouton appelle resettimer(). Je vais vous laisser cela

+0

côté serveur et le temporisateur client doit être corrigé chaque seconde par le temporisateur du serveur. – Julian

Questions connexes