功能:
protected void Page_Load(object sender, EventArgs e)
{
var formValue = Request.Form["test"];
}
服务器端:
{{1}}
函数发布良好但我在服务器端获得测试的空值。不知道是什么问题。
答案 0 :(得分:1)
你需要在服务器端使用web方法来接收这个ajax调用,它不能在页面加载时完成,因为这应该是ajax调用而不是整页刷新。
了解有关网络方法的更多信息:
Using jQuery for AJAX with ASP.NET Webforms
Calling a webmethod with jquery in asp.net webforms
我个人习惯使用ajax而不是asp.net表单中的页面方法:https://channel9.msdn.com/Blogs/ASP-NET-Site-Videos/how-do-i-make-ajax-calls-using-jquery
答案 1 :(得分:0)
您需要将aspx代码后面的方法标记为webmethod,并在发布时指定相同的内容。在客户端,您需要进行以下更改:
$.post("/SurveyResult.aspx/OnSubmit", {
test: 'testing',
}).done(function (data) {
alert("Data Updated");
});
此外,在您的代码隐藏中,您需要公开要调用的方法来处理帖子。
[WebMethod]
public static string OnSubmit(string test)
{
var value = test;
}
答案 2 :(得分:0)
您目前不发布表单编码数据,而是发布json字符串。如果你想保持aspx作为终点并使用Form
集合访问变量,那么你将不得不将你的ajax调用更改为post表格编码数据,并在http调用的标题中指定。
$.post({
url: "/SurveyResult.aspx",
data: $.param({test: 'testing'}),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).done(function (data) {
alert("Data Updated");
});
另请参阅param,它使得传递/转换对象作为请求数据的一部分更容易编写。你也可以用这个硬编码的字符串替换它。
data: "test=testing",