Я пытаюсь получить значения (широта, долгота) с помощью 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 либо пустые, либо нулевые?
Могу ли я узнать, что я могу сделать, чтобы решить эту проблему?
Цените любую помощь пожалуйста.. Спасибо!
Вы указали неверные переменные. Измените "широта" и "долгота" на 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;