Получение пустых значений с использованием Javascript

1

Я пытаюсь получить значения (широта, долгота) с помощью Geolocation. Я попытался использовать тот же Javascript (я отправлю его под вопрос) на другой странице, но этот Javascript срабатывает только при нажатии кнопки,

Сосредоточьтесь на OnClientClick = "call(); return false;"

<asp:Button ID="BTN_Register" runat="server" Text="Register" OnClientClick="call();return false;" CssClass="btn btn-theme-bg btn-3d btn-xs" OnClick="BTN_Register_Click" />

Поэтому я возвращаюсь к своей проблеме. Я использую те же Javascript-коды, что и в другом WebForm. И процесс этого процесса - это получение Широта и долготы, затем разбор его на 2 asp: HiddenFields, а затем сохранение их в базу данных с помощью кода Behind (aspx.cs),

resultRecord = al.createLogEntry(username, externalIP, Convert.ToDouble(latitudeTB.Value), Convert.ToDouble(longitudeTB.Value), "Pending");

Напишите сейчас в другом WebForm на стороне HTML,

Это мои коды,

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
<p class="text-success" runat="server" id="loginDetails"></p>
<p class="text-danger" runat="server" id="logoutDetails"></p>

<div>
    <asp:HiddenField runat="server" ID="latitudeTB"/>
    <asp:HiddenField runat="server" ID="longitudeTB"/>

    <script type="text/javascript">
    //GeoLocation Retrieval
    var geo = document.getElementById("geolocationValue");
    function getLocation() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(function (position) {
                var lat = position.coords.latitude;
                var lng = position.coords.longitude;
                document.getElementById("<%=latitudeTB.ClientID %>").value = lat;
                document.getElementById("<%=longitudeTB.ClientID %>").value = lng;
            });

        } else {
            geo.innerHTML = "Geolocation is not supported by this browser.";
        }
    }
    function call() {
        getLocation();
    }

    /*document.onreadystatechange = function (e) {
        if (document.readyState === 'complete') {
            //dom is ready, window.onload fires later
            call();
        }
    };*/

    /*$(window).load(function () {
        call();
    });*/
</script>

</div>

И в Page_Load я использовал этот RegisterClientScriptBlock, чтобы на самом деле заставить HiddenFields быть заполнены с помощью Локатора и долготы соответственно, чтобы затем быть сохранены в базе данных с помощью того же метода из другого WebForm, опубликованного выше,

ScriptManager.RegisterClientScriptBlock(this, GetType(), "StartGeo", "call();", true);

    Debug.WriteLine(latitudeTB.Value);
    Debug.WriteLine(longitudeTB.Value);

Я хочу, чтобы мои значения долготы и широты присутствовали в момент загрузки страницы, но, похоже, ничего не дало. Я проверил значения HiddenFields, но я ничего не получаю.. Это означает, что HiddenFields либо пустые, либо нулевые?

Могу ли я узнать, что я могу сделать, чтобы решить эту проблему?

Цените любую помощь пожалуйста.. Спасибо!

  • 0
    Есть несколько возможных проблем. 1) ваш код не вызывает getLocation (). 2) на самом деле это не запись значений в скрытые поля, или 3) они не сохраняются при регистрации в Page_Load. Просто для двойной проверки ... знаете ли вы, что ваш метод getLocation () вызывается? и что это на самом деле записывает значения?
  • 0
    Помогает ли это: stackoverflow.com/questions/21758137/…
Показать ещё 2 комментария
Теги:
null

1 ответ

1
Лучший ответ

Вы указали неверные переменные. Измените "широта" и "долгота" на lat. Проверьте отредактированный код ниже.

var lat = position.coords.latitude;
var lng = position.coords.longitude;
document.getElementById("<%=latitudeTB.ClientID %>").value = lat;
document.getElementById("<%=longitudeTB.ClientID %>").value = lng;

ваш предыдущий код был.

var lat = position.coords.latitude;
var lng = position.coords.longitude;
document.getElementById("<%=latitudeTB.ClientID %>").value = latitude;
document.getElementById("<%=longitudeTB.ClientID %>").value = longitude;
  • 0
    Спасибо Санил, не понял .. Но безрезультатно, я все еще получаю пустые значения в моем Debug для 2 HiddenFields ..
  • 0
    Привет @domster может поставить предупреждение (lat + "," + lng) ниже фрагмента кода var lat = position.coords.latitude; var lng = position.coords.longitude; Просто чтобы проверить, вызывает ли он функцию navigator.geolocation.getCurrentPosition ()
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню