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"] を使用して値を取得します。しかし、1行後にブレークポイントを設定した後、変数がnullであることがわかりました。誰でも助けてくれますか!~

4

4 に答える 4

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 に答える
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 に答える
0

name対応する属性を追加するだけです

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

これはおそらく、対象のコードの上に JavaScript を配置したためです。

「document.getElement...」を使用してタグ要素を参照する場合、そのタグ要素は、それを見つけるためにすでにレンダリングされている必要があります。

要素をターゲットにした後にコードを配置するか、Jquery ドキュメントをすぐに使用できます。

于 2012-10-14T06:45:23.260 に答える