【发布时间】:2017-08-01 10:33:50
【问题描述】:
我正在尝试使用 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,然后使用后面的代码(aspx.cs)将它们保存到数据库中,
resultRecord = al.createLogEntry(username, externalIP, Convert.ToDouble(latitudeTB.Value), Convert.ToDouble(longitudeTB.Value), "Pending");
现在在 HTML 端用不同的 WebForm 编写,
这些是我的代码,
<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 是空的还是 null?
我可以知道我能做些什么来解决这个问题吗?
感谢任何帮助..谢谢!
【问题讨论】:
-
有几个可能的问题。 1) 您的代码没有调用 getLocation()。 2) 它实际上并没有将值写入隐藏字段,或者 3) 当您签入 Page_Load 时它们没有被保存。只是为了仔细检查......你确定你的 getLocation() 方法被调用了吗?它实际上是在写值吗?
-
我没有太多的 javascript 经验,或者我以前从未学过.. 不幸的是,我真的说不出来.. 我该如何测试?我实际上只是使用 Debug.WriteLine 来检查 HiddenFields 内部是否有值..
-
@EricBurdo 我试过你提供的链接,但它仍然没有得到任何值..
标签: javascript c# asp.net .net null