【问题标题】:Datatables.Net not taking JSON responseDatatables.Net 不接受 JSON 响应
【发布时间】:2016-05-12 13:01:12
【问题描述】:

我正在尝试优化返回超过 5000 行数据的页面的负载。

我没有让背后的 ASP.Net Webforms 代码生成 HTML,而是尝试使用 JQuery 来实现这一点。

请在下面查看我的代码。

$.ajax({
            type: "POST",
            url: "TeamChecks.aspx/GetDataTables",
            data: JSON.stringify(params),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                //console.log(data.d);

                var table = $('#hidJson_tbl_2').DataTable({
                    "ajax": data.d,
                    "columns:": [
                        { "data": "CaseHandlerStaffNumber" },
                        { "data": "RiskProfileText" },
                        { "data": "AssignedCheckerStaffNumber" },
                        { "data": "FeedbackUserStaffNumber" },
                        { "data": "ComplaintRef" },
                        { "data": "ChildComplaintRef" },
                        { "data": "CaseTypeText" },
                        { "data": "CheckGrade" }
                    ]
                });
            },
            error: function (data) {
                console.log(data);
            }
        }

调用使用NewtonSoft Json.Net的方法

TeamChecks tc = new TeamChecks();

DataTable dtMc = default(DataTable);
dtMc = tc.Get_DatatableFor_GridView(userId, CheckStatusId);

string jsonResult = null;
jsonResult = Newtonsoft.Json.JsonConvert.SerializeObject(dtMc);
jsonResult = jsonResult.Replace("[{", "{data:[{").Replace("}]", "}]}");
return jsonResult;

我松散地遵循的示例,因为我需要从后面的代码而不是文本文件中获取值,可以在这里找到https://datatables.net/reference/option/ajax

我得到的错误信息是

"{"Message":"使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过在 maxJsonLength 属性上设置的值。","StackTrace":" 在 System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, StringBuilder output, SerializationFormat serializationFormat)\r\n 在 System. Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, SerializationFormat serializationFormat)\r\n 在 System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n 在 System .Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}"

如果有人能帮助我了解我哪里出了问题以及我需要做什么来解决这个问题,我将不胜感激。

谢谢

【问题讨论】:

  • 我不知道如何解决,但对我来说突出的一点是 “字符串的长度超过了 maxJsonLength 属性上设置的值”您的错误信息;似乎您的 5000 条记录正在溢出。抱歉,如果这没有多大帮助 - 只是认为它可能会给你一个从这里去哪里的指针

标签: c# jquery asp.net json datatables


【解决方案1】:

您的问题在于 SerializeObject,您必须将 maxJsonLength 设置为一个大数字以适合您的情况。看到这个答案here

【讨论】:

  • 谢谢你,这个错误已经解决了,现在我还有另一个工作要做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
  • 2017-11-18
  • 1970-01-01
相关资源
最近更新 更多