2017-01-07 2 views
0

So versuche ich Standortkoordinaten auf Seite laden von asp.net-Seite. Das Problem ist, dass die Werte meiner versteckten Felder nicht existieren, bis die Seite vollständig geladen ist. Ich habe versucht, auf Unload-Ereignis zu erfassen, in der Hoffnung, dass es weiter nach dem Rendern usw. war, ohne Erfolg, da der Server noch dient. Ich möchte einfach meine Daten in meine db on page load Ereignis schreiben. Ich möchte nicht, dass der Benutzer auf eine Schaltfläche klicken muss, um die Daten aufzuzeichnen, da ich dazu in der Lage bin, aber die zusätzliche Eingabe vom Benutzer nicht benötigt wird.Coords auf Seite laden Server Seite

Erhalten Coords-Code JS:

navigator.geolocation.getCurrentPosition(
    function showPosition(position) { 
    $("[id*=hdnLatitude]").val(position.coords.latitude); 
    $("[id*=hdnLongitude]").val(position.coords.longitude); 
        }, 
function (error) { 
     }, { 
     enableHighAccuracy: true 
     , timeout: 5000 
     } 
    ); 

Auf der Seite Load Event ASP.Net:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    'write to my db 
End Sub 

Ich weiß also, wie man die Datenbank beim Laden der Seite zu schreiben, aber wie ich schon sagte oben, die versteckte Felder haben noch keine Daten in ihnen. Meine Frage ist, wie ich die Daten in ihnen entweder vor dem Laden der Seite erhalten. Dies scheint nicht möglich zu sein, da es dem Client noch nicht gedient hat, aber kann ich ein Postback oder etwas beim Laden der Seite erzwingen, um diese Werte zu bekommen, da sie bis dahin geladen worden sind? Ich möchte wirklich nicht, dass die Seite beim Benutzer blinkt, d.h. zweimal laden. Hoffe, das macht Sinn. Danke im Voraus.

Antwort

0

Also entschied ich mich für einen Ajax Timer. Ich setze es auf 6000 und es feuert auf der Serverseite und macht, was ich brauche. Ich lege es in ein Update-Panel und es wird ausgelöst, ohne die gesamte Seite neu zu laden. Vielleicht nicht die beste Lösung, aber macht den Job.

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
      <asp:Timer ID="tmrRecord" runat="server" Interval="6000"> 
</asp:Timer> 
<asp:Label ID="lblLocation" runat="server"></asp:Label> 
    </ContentTemplate> 
</asp:UpdatePanel> 



Protected Sub tmrRecord_Tick(sender As Object, e As EventArgs) Handles tmrRecord.Tick 
    'record coords to database 
    tmrRecord.Enabled = False 
End Sub