我有一个从php文件收到的JSON对象,JSON对象是按照指定的格式创建的。但是我得到了 警告UNRESPONSIVE SCRIPT.I有超过50,000条记录,它加载每条记录而不是我在iDisplayLength参数中指定的20条记录。 我知道我做错了什么,请帮忙。
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" ]]
});
});
答案 0 :(得分:3)
服务器只能通过请求传递一定数量的数据。
基本上,数据表正在做什么,即使您定义了一个显示参数,它仍然会从源中获取所有数据,然后对其进行处理。
Datatables获取数据然后处理所有内容并将其放入内部数组中。我只能想象在只有几百行之后会占用多少空间。
在任何情况下,bServerSide
布尔值都会通知您要处理的数据表并自行处理所有内容,然后反馈您想要的内容。您应该阅读datatables.net上提供的文档和示例。
您应该密切关注他们如何进行服务器端处理,因为它非常适合您拥有庞大数据集的场景。
最后一个显示了如何管理大型数据集以及如何进行分页的完整参考,以及服务器端的几乎所有内容,有效地节省了数据表的处理时间。
您的问题是您要返回所有内容,但忘记过滤数据以仅包含当前“页面”上的行。这都是在服务器端上完成的,因此是变量名。