2016-08-04 29 views
0

Ich arbeite an einem Javascript-Timer..Timer funktioniert gut, aber ich möchte Timer-Wert in Datenbank aktualisieren, wenn Benutzer die Seite entladen, aber das Problem ist der ursprüngliche Wert des Timers wird aktualisiert Datenbank nicht aktuelle Wert hier ist mein Code für JavaScript-Timer:Javascript Timer wird zurückgesetzt, während ich es in die Datenbank aktualisieren

<script type="text/javascript"> 


    var t; 

    function display() { 

     if ((document.getElementById("<%=lblMin.ClientID%>").innerText == 0) && (document.getElementById("<%=lblSec.ClientID%>").innerText == 0)) { 
       //if a popup window is used: 
       setTimeout("self.close()", 1000); 
       return; 
      } 
      else { 
       document.getElementById("<%=lblSec.ClientID%>").innerText -= 1 
       document.getElementById("<%=lblMin.ClientID%>").innerText = document.getElementById("<%=lblMin.ClientID%>").innerText 
       document.getElementById("<%=lblSec.ClientID%>").innerText = document.getElementById("<%=lblSec.ClientID%>").innerText 
       t = setTimeout("display()", 1000); 
       if (document.getElementById("<%=lblSec.ClientID%>").innerText <= 0) { 
       document.getElementById("<%=lblSec.ClientID%>").innerText = 60; 
        document.getElementById("<%=lblMin.ClientID%>").innerText -= 1; 



       } 

     } 
    } 
    window.onload = display; 

auf Seite Entlade-Code:

Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload 
    con = New OleDb.OleDbConnection 
    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Ashu\Documents\Visual Studio 2012\Projects\Technoshine X.6\Technoshine X.6\bin\MCQ.accdb" 



    If Not con.State = ConnectionState.Open Then 
     con.Open() 
    End If 

    cmd.Connection = con 

    cmd.CommandText = "UPDATE Gamer" & " SET [TIME]='" & lblMin.Text & "',[SECOND]='" & lblSec.Text & "' WHERE [ID]='" & Me.lblUser.Text & "'" 
    cmd.ExecuteNonQuery() 

    con.Close() 

End Sub 

Aktualisiere den aktuellen Wert des Timers nicht Aktualisierungstimer Initialwert 29 60 ... pls hilf mir, dieses Problem zu lösen, danke im Voraus

+0

Nicht im Zusammenhang mit Ihrer Frage, aber bitte tun Sie dies nicht: 't = setTimeout (" display() ", 1000);' das sollte be 't = setTimeout (display, 1000);' – Jamiec

Antwort

0

Das Ereignis unload wird im Kontroll-Lebenszyklus kurz vor der Entsorgung ausgelöst. Da die Seite selbst ein Steuerelement ist, wird auch das Entladeereignis ausgelöst. Jedes Steuerelement, das Sie der Seite hinzufügen, ist Teil des Seitenlebenszyklus. Wenn Sie also ein Steuerelement haben, das aufgeräumt werden muss, sollte das Steuerelement selbst jede mögliche Bereinigung selbst behandeln. Sie sollten sich darüber keine Gedanken machen müssen, vorausgesetzt, das Steuerelement wurde der Seite hinzugefügt und entspricht dem Verkapselungsprinzip.

Sie mit Javascript, bevor Browser schließen oder Tab schließen und senden Wert mit AJAX

window.onbeforeunload = function(e) { 
    return 'String'; 
}; 

versuchen können, die versuchen:

zuerst Ihre Methode Webmethod machen von

Inherits System.Web.Services.WebService 
<System.Web.Services.WebMethod> 
Public Sub Webmethod() 
    //get time object name "date" form request from and pass to commandText 
End Sub 


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
<script> 
    window.onbeforeunload = function(e) { 
     $.ajax({ 
      method: "POST", 
      url: "/*webMethod url*/",//Url 
      data: { date: new Date() } 
     }) 
     .done(function(msg) { 
      alert("Will close"); 
      return 'String'; 
     }); 

    }; 
</script> 
+0

Ich habe nicht viel Ahnung von Ajax, speziell wie kann ich Datenbank-Wert mit Ajax aktualisieren können Sie mir helfen, Wert mit Ajax bitte zu aktualisieren – Ashutosh