$ .post不会将数据发送到Web表单

时间:2017-07-07 13:36:23

标签: jquery asp.net .post

功能:

 protected void Page_Load(object sender, EventArgs e)
 {    
    var formValue = Request.Form["test"];
 }

服务器端:

{{1}}

函数发布良好但我在服务器端获得测试的空值。不知道是什么问题。

3 个答案:

答案 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",