0
<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"] 来获取值。但是在我在一行之后设置断点后,结果发现变量为空。谁能帮忙!~

4

4 回答 4

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 />
于 2012-10-14T06:42:48.793 回答
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;
于 2012-10-14T07:44:33.557 回答
0

这可能是因为您将 javascript 放在了目标代码之上。

如果您使用“document.getElement...”引用标签元素,则该标签元素必须已经呈现才能找到它。

要么在定位元素之后放置代码,要么使用准备好的 Jquery 文档。

于 2012-10-14T06:45:23.260 回答
0

只需添加相应的name属性

<input type="hidden" id="lat" name="lat">
<input type="hidden" id="lon" name="lon">
于 2012-10-14T07:28:04.137 回答