【问题标题】:Convert table data to Json in Ajax在ajax中将表数据转换为Json
【发布时间】:2013-11-18 06:12:39
【问题描述】:

我必须向控制器发送数据,我尝试使用字符串 fromat,但经过一定限制后它不接受数据...所以我想将其转换为 json 并发送...或者是否有任何其他方式可以发送更多Ajax 的数据请给我建议,请告诉我如何将我的数据转换为 json 格式以及如何将其转换为控制器中的字符串,....

var param = "&tbl=" + tbldata;
        param = param + "&tblheader=" + tblheader;

        var request = $.ajax({
            url: '../rep/send?'+param,
            type: 'POST',
            cache: false,
            dataType: 'text',
            contentType: 'application/text; charset=utf-8'
        });

[HttpPost]
[ValidateInput(false)]
public ActionResult SendReport(string tbl, string tblheader)
{

}

【问题讨论】:

  • 请建议我在 jquery 中通过 ajax 发送数据时可以通过的任何限制...\

标签: jquery asp.net-mvc-4


【解决方案1】:

如果 tbldata 是字符串,那么您可以使用名为 JSON.stringify(string) 的函数,并且 Ajax 数据类型应该是 json。

供您参考:Difference between JSON.stringify and JSON.parse

【讨论】:

  • 这不是我的问题我已经尝试过这个,当我以字符串形式发送数据时它接受到一定的限制,如 param.lenth - 1576 同样之后它正在崩溃我的代码所以我想转换将其转换为 json 并将其发送到控制器...如果您有任何解决方案,以便我可以以字符串形式发送更多数据也请告诉我
  • 那我希望你应该修改web.config 属性
  • 我现在试过了,这也不起作用,请提出其他建议
【解决方案2】:

尝试在您的 web.config 文件中添加以下内容。

 <configuration>
   <system.web>
     <httpRuntime maxRequestLength="xxxx" />
   </system.web>
 </configuration>

maxRequestLength 的默认值为 4096 (4MB)。

尝试设置大于 4MB 的值。这可能对你有用。

希望对你有帮助。

【讨论】:

  • @user2996030 检查浏览器控制台。 ajax请求可能有一些错误
【解决方案3】:

如果您要使用json(这是一个不错的选择),您需要了解客户端的javscript object structureserialization 和服务器端的deserialization

【讨论】:

    【解决方案4】:

    在 url 中传递数据有一个限制,具体取决于导航器 (Example)

    最好在请求正文中传递它:

    var request = $.ajax({
       url: '../rep/send',
       type: 'POST',
       cache: false,
       dataType: 'json',
       data: {
              tbl: tbldata,
              tblheader : tblheader 
       },
       contentType: 'application/text; charset=utf-8'
    });
    

    编辑

    创建模型:

    [DataContract]
    public class ReportModel
    {
        [DataMember]
        public string tbl {get; set; }
    
        [DataMember]
        public string tblheader {get; set; }
    }
    

    修改控制器:

    [HttpPost]
    [ValidateInput(false)]
    public ActionResult SendReport([FromBody] ReportModel data)
    {
    
    }
    

    【讨论】:

    • @user2996030 我编辑了我的帖子,反映了我正在使用和工作的内容。
    • 这是接受 json 数据到控制器的唯一方法,如果是这样,请给我任何其他方式?
    • 请给我完美的解决方案
    【解决方案5】:

    记得对数据进行编码。

    在javascript中:

      var sJsonData = JSON.stringify({your data});
      ......
      contentType:"application/x-www-form-urlencoded; charset=UTF-8",
      data: "sJsonObject=" + encodeURIComponent(sJsonData),
    

    所以你的情况看起来像:

            url: '../rep/send',
            type: 'POST',
            data: "sJsonObject=" + encodeURIComponent(JSON.stringify(para)),
            contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
            ...
    

    服务器端:

    [HttpPost]
    public ActionResult ajaxProcess(string sJsonObject = "")
    string sUnescapeJsonData = System.Uri.UnescapeDataString(sJsonObject);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 2017-01-24
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      相关资源
      最近更新 更多