使用 ajax 传递数据并使用 Request.Form[""] 读取数据

Posted

技术标签:

【中文标题】使用 ajax 传递数据并使用 Request.Form[""] 读取数据【英文标题】:Passing data with ajax and read it with Request.Form[""] 【发布时间】:2019-01-27 13:02:39 【问题描述】:

我尝试将参数从js 脚本传递到aspx.cs 页面。当我省略时:

contentType: "application/json; charset=utf-8"

在 ajax 请求中,我得到了 Request.Form["ORDER"] sth like %7b%22ORDER_ID%22%3a126333%7d。意思是这个数据来到aspx.cs,但是没有解码。

当我添加 contentType 时,我没有收到任何请求。

下面我附上请求。

aspx.cs中从Request.Form["ORDER"]读取参数很重要;

$.ajax(
        type: 'POST',
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify( ORDER_ID: orderKeyId ),
        dataType: "json",
        url: sUrl,
        success: function (data) 
            var s = 0;
        ,
        error: function () 
            var s = 0;
        
    );

【问题讨论】:

WebForms 默认设计为使用表单 urlencoded 数据,而不是 JSON。如果你想使用 JSON,你需要手动从 Request 对象反序列化它,或者编写你自己的模型绑定器。 你必须在 aspx.cs 文件中解析一次 json 发布aspx.cs文件数据 @Ameya Deshpande 这只是简单的 PageLoad 然后 (Request.Form["ORDER_ID"] 这就是你已经在做的事情。问题纯粹是因为您要发送 JSON。 【参考方案1】:

根据@Rory McCrossan 的评论,以下 ajax 状态有效:

$.ajax(
    type: 'POST',
    contentType: "application/x-www-form-urlencoded",
    data: "ORDER_ID=" + encodeURIComponent(orderKeyId),
    url: sUrl,
    success: function (data) 
        var s = 0;
    ,
    error: function () 
        var s = 0;
    
);

【讨论】:

以上是关于使用 ajax 传递数据并使用 Request.Form[""] 读取数据的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5:在路由中获取 ajax 数据并传递给控制器

如何使用ajax在url中传递不同的链接值

简单的烧瓶应用服务器使用 ajax 和 jquery 传递数据

Laravel 使用 AJAX 将 Javascript 变量传递给 PHP 并检索那些

将数据传递到处理程序的 Jquery ajax 不起作用(Asp.net、C#、Jquery)

使用ajax()方法加载服务器数据