【问题标题】:jQuery Datatables not serializing more than 1000 recordsjQuery Datatables 不序列化超过 1000 条记录
【发布时间】:2017-05-16 15:15:47
【问题描述】:

我有一个在客户端呈现 1500 行的 jQuery 数据表。我的用户检查行,然后我发送所选行的 ID 并保存数据。

这对于前 1000 行运行良好,但任何时间超过检查数据似乎没有被发布 - 在开发工具上,对 MVC 控制器的调用显示 500 内部服务器错误,但在方法它不会被击中?

如果我选择了 1000 行,则断点会被命中,并且所有 1000 个 ID 都会通过。一旦我再添加 1 行进行检查,断点不会被命中,但我在开发工具上看到 500 内部服务器错误?

我的代码如下:

  $('#saveBtn').click(function () {
    var dataArr = [];
    var rows = $('tr.selected');
    var rowData = myTable.rows({ selected: true }).data();

    $.each($(rowData), function (key, value) {
      dataArr.push(value[0]); //Id is hidden in 1st column of the table
    });

    $.ajax({
      type: 'POST',
      url: '@Url.Action("SaveData", "MyController")',
      data: JSON.stringify(dataArr),
      contentType: 'application/json; charset=utf-8',
      success: function (data) {
        location.reload();
      },
      error: function () {
        sweetAlert("Error Occurred Saving");
        location.reload();
      },
    });
  });

我的 MVC 控制器非常简单

[HttpPost]
public ActionResult SaveData(List<int> Ids)
{
  //private method that just calls to the DB and sets a flag to say that Id was checked
  SaveData(Ids);

  return new HttpStatusCodeResult(HttpStatusCode.OK);  
}

我尝试将以下内容添加到我的 MVC Web 配置中,但当我选择超过 1000 个时,我仍然没有遇到断点

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="2147483644"/>
    </webServices>
  </scripting>
</system.web.extensions>

【问题讨论】:

  • 尝试将 maxjsonlength 属性设置为更高的值。谢谢。
  • 比我拥有的 2147483644 更高的值 - 这不是它可以达到的最大值吗?
  • 您可以在哪里设置集合大小?好像限制在 1000
  • 值正确。您将断点放在哪里 - 在 SaveData 函数中?如果是这样,您能否发布代码或检查它是否发现任何错误
  • 真的很愚蠢的问题,但是您是否在数据表上启用了分页?

标签: javascript c# jquery json asp.net-mvc


【解决方案1】:

在配置中添加到您的 appSettings 元素会覆盖默认的最大限制,因为如果出于安全考虑,ASP.NET 会拒绝包含超过 1000 个元素的请求。

https://msdn.microsoft.com/en-us/library/hh975440(v=vs.120).aspx

【讨论】:

    【解决方案2】:

    我们可以解决此问题的方法之一是在 c# 中指定 json 结果的最大长度。
    示例:-

    jsonResult.MaxJsonLength = 999999999;
    return  jsonResult
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      相关资源
      最近更新 更多