asp.net里面的javascript没有设置隐藏字段值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net里面的javascript没有设置隐藏字段值相关的知识,希望对你有一定的参考价值。
我是Asp.net的新手。我试图使用GeoLocation获取纬度和经度,并尝试将值设置为PageLoad上的隐藏字段。
问题是隐藏字段的值始终为空。但是请在javascript调用中查看alert语句,警报会正确显示纬度和经度值。如何填充C#代码中的隐藏字段,以便在页面加载时将这些值作为电子邮件发送。请帮忙
aspx代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script>
window.onload = getLocation();
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
else { x.innerHTML = "Geolocation is not supported by this browser."; }
}
function showPosition(position) {
document.getElementById('<%=Latitide.ClientID%>').value = position.coords.latitude;
document.getElementById('<%=Longitude.ClientID%>').value = position.coords.longitude;
alert("Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<br />
<asp:HiddenField runat="server" ID="Latitide" ClientIDMode="Static" Value="" />
<asp:HiddenField runat="server" ID="Longitude" ClientIDMode="Static" Value="" />
</form>
</body>
</html>
代码背后:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Latitude " + Latitide.Value + "-Longitude" + Request.Form["Longitude"]);
}
}
答案
您的服务器端代码(Page_Load)在首次请求页面时执行,此时这些值为空,在ASPX标记中设置(朝向该文件的底部)。
当该文件随后被提供给浏览器时,它会执行您拥有的JavaScript代码(onload),此时设置这些隐藏字段的值(但您仍然不会在页面源中看到它们)。如果你javascript-alert这个:
document.getElementById('<%=Longitude.ClientID%>').value
...我想你会看到你的期望。
我需要更多地了解该网页的意图,以提供更多指导。
以上是关于asp.net里面的javascript没有设置隐藏字段值的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery / JavaScript (ASP.NET) 将下拉链接的父列表项设置为活动状态
asp.net 中 DateTime 的 Javascript 序列化没有给出 javascript 日期对象?