Координаты на странице загрузки сервера

Поэтому я пытаюсь записать координаты местоположения при загрузке страницы 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
Другие вопросы по тегам