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

时间:2012-03-05 12:46:46

标签: jquery datatables

我有一个从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" ]]
        });
    });

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

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

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