Jquery数据表服务器端处理大型数据集的json序列化错误

时间:2014-11-15 01:14:03

标签: jquery-datatables

在web服务的web.config中返回超过40,000条记录我为json序列化设置了maxlength

<system.web.extensions>
   <scripting>
      <webServices>
         <jsonSerialization maxJsonLength="50000000"/>
      </webServices>
   </scripting>
</system.web.extensions>
function BindInfoDataTableServerSide() 
{
    var oTable = $('#example').dataTable({
        "sScrollY": "250px",
        'bPaginate': true,
        "bProcessing": true,
        "bFilter": false,
        "bServerSide": true,
        //"aoColumns": [null, null, { "bSortable": false }, { "bSortable": false}, null, null, null, null],
       /* "aoColumns": [
                { "sTitle": "ScreenId" },
                { "sTitle": "RunId" },
                { "sTitle": "RecordType" },
                { "sTitle": "TrackerKey" },
                { "sTitle": "SeqNo" },
                { "sTitle": "TRSeqNo" },
                { "sTitle": "TestParam" },
                { "sTitle": "ParamValue" },
            ]
        ,*/
        "sAjaxSource": "../SocWebService.asmx/LoadMidasData",
        "sAjaxDataProp": "aaData",
        "fnServerData": function (sSource, aoData, fnCallback) { GrabData(sSource, aoData, fnCallback); }
    });

}

function GrabData(sSource, aoData, fnCallback) {

    $.ajax({
        type: "POST",
        url: sSource,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: "",
        success: function (result) {
            var  myObject = JSON.parse(result.d);

            fnCallback(myObject);
            //fnCallback(result.d);
        },
        error: function (errMsg) {
            alert(errMsg);
        }
    });

}

但是当记录达到50,000时,我会遇到以下错误

在使用JSON JavaScriptSerializer进行序列化或反序列化期间。字符串的长度超过maxJsonLength属性上设置的值。 Jquery datatables网站声称他们可以显示100万条记录。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

使用DataTables进行服务器端处理的主要思想是服务器只返回当前浏览器中显示所需的行(用户页面,并进行排序等) - 所以尽管实际上可能有1个百万条记录,只有一小部分记录应该由Web服务调用返回,因此不应超出ajax限制。

这样客户端保持良好和快速,在服务器上完成繁重的工作(或者可能在数据库中完成,具体取决于您生成数据的方式)。