【问题标题】:$.post is not send data to web form$.post 不会将数据发送到 Web 表单
【发布时间】:2017-12-11 20:02:57
【问题描述】:

功能:

$.post("/SurveyResult.aspx", {
    test: 'testing',
}).done(function (data) {
    alert("Data Updated");
});

服务器端:

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

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

【问题讨论】:

    标签: jquery asp.net .post


    【解决方案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

    【讨论】:

    • 我从不同的表单发帖到SurveyResult.aspx。所以它可以在页面加载中完成。我一直在其他应用程序中这样做,但不知道为什么没有得到任何数据]
    • 啊哈,那不一样了,好吧,你尝试用 get 代替 post 吗?
    【解决方案2】:

    您需要将后面的 aspx 代码上的方法标记为 webmethod,并在发布到它时指定相同的方法。在客户端上,您需要进行以下更改:

    $.post("/SurveyResult.aspx/OnSubmit", {
    test: 'testing',
    }).done(function (data) {
    alert("Data Updated");
    });
    

    此外,在您的代码隐藏中,您需要公开要调用的方法来处理帖子。

    [WebMethod]
    public static string OnSubmit(string test)
    {
       var value = test;
    
    }
    

    【讨论】:

      【解决方案3】:

      您当前发布的不是表单编码数据,而是一个 json 字符串。如果您想将 aspx 作为终点并使用 Form 集合访问变量,那么您将必须更改您的 ajax 调用以发布表单编码数据并在 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",
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-09
        • 1970-01-01
        • 2021-02-03
        • 2012-01-28
        • 2019-06-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多