<script type="text/javascript">
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(getPostion);
}
}
function getPostion(position) {
var currentLat = position.coords.latitude;
var currentLon = position.coords.longitude;
alert(currentLat);
document.forms[0].lat.value = "123";
alert(document.forms[0].lat.value);
document.forms[1].lon.value = currentLon;
alert(document.forms[1].lon.value);
}
</script>
<input type="hidden" name="lat">
<input type="hidden" name="lon">
<asp:TextBox ID="status" runat="server" CssClass="text" MaxLength="100" Columns="40" TextMode="MultiLine"></asp:TextBox>
<asp:Button ID="textSubmit" runat="server" CssClass="textSubmit" Text="submit" OnClientClick="getLocation()" OnClick="Post" />
protected void Post(object sender, EventArgs e)
{
string latitude = Request.Form["lat"].ToString();
string longitude = Request.Form["lon"].ToString();
string text = status.Text.Trim().ToString();//breakpoint here
string connectionString = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
SqlConnection con = new SqlConnection(connectionString);
try
{
con.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO [dbo].[Locations] VALUES('jshmqjw'," + Convert.ToDouble(latitude) + ", " + Convert.ToDouble(longitude) + ",CONVERT(varchar(100), GETDATE(), 20), 'text' )", con);
cmd.ExecuteNonQuery();
}
catch (Exception err)
{
Response.Write("<script>alert('Error reading The database. " + err.Message + "') </script>");
}
finally
{
con.Close();
}
}
我想将变量从javascript发送到C#。 我首先使用隐藏字段存储值,然后在C#中使用request.form [“name”]来获取值。但是在我在一行之后设置断点之后,结果是变量为空。 任何人都可以帮忙!〜
答案 0 :(得分:1)
添加runat =“server”:
<input type="hidden" runat="server" id="lat" name="lat">
<input type="hidden" runat="server" id="lon" name="lon">
并且
string latitude = lan.Value;
string longitude = lon.Value;
JavaScript代码:
function getPostion(position) {
var currentLat = position.coords.latitude;
var currentLon = position.coords.longitude;
alert(currentLat);
document.getElementById("<%=lan.ClientID%>").value = "123";
alert(document.getElementById("<%=lan.ClientID%>").value);
document.getElementById("<%=lon.ClientID%>").value = currentLon;
alert(document.getElementById("<%=lon.ClientID%>").value);
}
另外,您可以使用:
<asp:HiddenField />
答案 1 :(得分:1)
这可以解决您的问题:
将html隐藏字段替换为:
<asp:HiddenField ID="lat" runat="server"/>
<asp:HiddenField ID="lon" runat="server"/>
然后在你的getPosition() -
中document.getElementById('<%= lat.ClientID %>').value= currentLat ;
document.getElementById('<%= lon.ClientID %>').value= currentLon ;
在代码背后:
string latitude = lat.Value;
string longitude = lon.Value;
答案 2 :(得分:0)
这可能是因为您将javascript置于目标代码之上。
如果使用“document.getElement ...”引用标记元素,则必须已经呈现该标记元素才能找到它。
要么将代码放在目标元素之后,要么使用Jquery文档就绪。
答案 3 :(得分:0)
只需添加相应的name
属性
<input type="hidden" id="lat" name="lat">
<input type="hidden" id="lon" name="lon">