使用Jquery.post时如何在ASP.Net中获取表单值

时间:2009-12-24 13:39:58

标签: asp.net javascript jquery

我使用以下脚本将数据发布到ASP.Net

$.post(window.location, { name: "John", time: "2pm" }) 

在我的page_load事件中,我正在检查Request.Forms.AllKeys,但计数为零。

我的表格是  <form name="aspnetForm" method="post" action="Default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm">

3 个答案:

答案 0 :(得分:2)

$.post是jQuery的AJAX调用。它与您post上的form无关。

您可以使用PageMethod来实现您的目标:

在您的代码隐藏中创建类似

的内容
[WebMethod]
public static void HandleMyPost(string name, string time)
{
    //do something

}

然后将ScriptManager控件添加到.aspx页面,并设置EnablePageMethods="true"

然后从JavaScript(您的$.post现在)到

调用您的方法
PageMethods.HandleMyPost(function() {}, "John", "2pm")

答案 1 :(得分:1)

该代码应该有效。这是我做的测试

在我的代码背后,我有:

protected void Page_Load(object sender, EventArgs e)
{
    foreach (var key in Request.Form.AllKeys)
    {
        // do stuff here.
    }
}

在页面上我有:

<script type="text/javascript">
    $(document).ready(function()
    {
        $('#btn').click(function()
        {
            $.post(window.location, { name: "John", time: "2pm" });
            return false;
        });
    });
</script>


<input type="button" id="btn" value="Click Me" />

screenshot http://imagebin.antiyes.com/images/0565978001261663525_33.jpg

当我点击按钮并在foreach上有断点时我可以看到帖子值,有两个。

答案 2 :(得分:0)

window.location对象不是[url]的有效jQuery.post参数。您应该使用window.location.href代替:

// or the shorter location.href
$.post(location.href, { name: "John", time: "2pm" })

然而,jQuery 1.3.2(至少)没有失败,而是回到默认的ajaxSettings,其中包括:{/ p>

ajaxSettings: {
    url: location.href,
    type: "GET"
}

由于它发出了GET请求,您显然无法在Request.Form集合中看到您的数据。