我使用以下脚本将数据发布到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">
答案 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
集合中看到您的数据。