Координаты на странице загрузки сервера
Поэтому я пытаюсь записать координаты местоположения при загрузке страницы asp.net. Проблема в том, что значения моих скрытых полей не существует, пока страница не будет полностью загружена. Я попытался перехватить событие выгрузки, надеясь, что оно будет дальше после рендеринга и т. Д., Но безрезультатно, поскольку сервер все еще работает. Я просто хочу записать свои данные в мою базу данных при событии загрузки страницы. Я не хочу, чтобы пользователь нажимал кнопку для записи данных, поскольку я могу это сделать, но не хочу, чтобы от пользователя требовался дополнительный ввод.
Получить код Coords 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
}
);
На странице загрузки события ASP.Net:
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
'write to my db
End Sub
Поэтому я знаю, как записывать в базу данных при загрузке страницы, но, как я уже сказал выше, в скрытых полях еще нет данных. Мой вопрос заключается в том, как получить данные в них либо до загрузки страницы. Это кажется невозможным, поскольку оно еще не обслуживало клиента, но могу ли я принудительно выполнить обратную передачу или что-то еще при загрузке страницы, чтобы получить эти значения, поскольку они будут загружены к тому времени? Я действительно не хочу, чтобы страница вспыхивала на пользователе, то есть загружалась дважды. Надеюсь, это имеет смысл. Заранее спасибо.
1 ответ
Поэтому я решил использовать Ajax Timer. Я установил его на 6000, и он срабатывает на стороне сервера и делает то, что мне нужно. Я помещаю его в панель обновлений, и он запускается без перезагрузки всей страницы. Может быть, не лучшее решение, но делает работу.
<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