jquery数据表 – 服务器端处理未按预期工作

我有一个从php文件收到的JSON对象,JSON对象是按照指定的格式创建的。但我收到警告UNRESPONSIVE SCRIPT.I有超过50,000条记录,它加载每条记录而不是20条记录我在iDisplayLength参数中指定。 我知道我做错了什么,请帮忙。

JSON对象:

{ "iTotalRecords":"52000", "iTotalDisplayRecords":"52000", "sEcho":0, "aaData":[ {"itemID":"13901","itemName":"Item 1","itemModel":"Model 1","Price":"20"}, {"itemID":"13902","itemName":"Item 2","itemModel":"Model 2","Price":"30"}, {"itemID":"13903","itemName":"Item 3","itemModel":"Model 3","Price":"50"}, {"itemID":"13904","itemName":"Item 4","itemModel":"Model 4","Price":"60"}, {"itemID":"13905","itemName":"Item 5","itemModel":"Model 5","Price":"20"}, ................ ] } $(document).ready( function () { $('#tbItems').dataTable( { "bProcessing": true, "bServerSide": true, "sAjaxSource": "getItems", "aoColumns": [ { "sTitle": "itemID", "mDataProp": "itemID" }, { "sTitle": "itemName", "mDataProp": "itemName" }, { "sTitle": "itemModel", "mDataProp": "itemModel" }, { "sTitle": "itemPrice", "mDataProp": "itemPrice" } ], "sPaginationType": "full_numbers", "bLengthChange": false, "iDisplayLength": 20, "aaSorting": [[ 1, "asc" ]] }); }); 

服务器只能通过请求传递一定数量的数据。

基本上,数据表正在做什么,即使您定义了显示参数,它仍将从您的源获取所有数据然后进行处理。

Datatables获取数据然后处理所有内容并将其放入内部数组中。 我只能想象在仅仅几百行后它会占用多少空间。

在任何情况下, bServerSide布尔都会通知您要处理的数据表并bServerSide处理所有内容,然后反馈您想要的内容。 您应该阅读datatables.net上提供的文档和示例。

您应该密切关注它们如何进行服务器端处理,因为它非常适合您拥有大量数据集的场景。

  • 如果您确切知道初始数据集有多少行,则可以使用iDeferLoading
  • 服务器端设置 (向下滚动到“服务器端(PHP)代码”)和数据表服务器端处理管道

最后一个显示了如何管理大型数据集以及如何进行分页的完整参考,以及服务器端的几乎所有内容,有效地节省了数据表的处理时间。

您的问题是您要返回所有内容,但忘记过滤数据以仅包含当前“页面”上的行。 这都是在服务器端完成的 ,因此是变量名。