Таблицы данных jquery - обработка на стороне сервера не работает должным образом - PullRequest
0 голосов
/ 05 марта 2012

У меня есть объект JSON, который я получаю из файла php, объект JSON создается в соответствии с указанным форматом. Но я получаю предупреждение UNRESPONSIVE SCRIPT. У меня более 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" ]]
        });
    });

1 Ответ

3 голосов
/ 05 марта 2012

Сервер может передавать только определенный объем данных через запрос.

По существу, что делает таблица данных, даже если вы определите параметр отображения, он все равно будет извлекать все данные из вашего источника и затем их обработка.

Datatables извлекает данные, затем обрабатывает все и помещает их во внутренний массив.Я могу только представить, сколько места заняло бы это после пары сотен строк.

В любом случае, логическое значение bServerSide уведомляет таблицы данных о том, что вы собираетесь обработать и обработать все самостоятельно, а затем передатьназад, что вы хотите.Вы должны ознакомиться с документацией и примерами, доступными по адресу datatables.net .

. Вам следует обратить пристальное внимание на то, как они выполняют обработку на стороне сервера, поскольку она идеально подходит для вашего сценария, где у вас естьОгромный набор данных для работы.

Последний показывает полную ссылку на то, как управлять большиминаборы данных и как выполнять разбиение на страницы и почти все на стороне сервера, эффективно экономя время обработки для таблиц данных.

Ваша проблема в том, что вы возвращаете все, но забыли отфильтровать данные ввключать только строки на текущей «странице».Все это делается на серверной стороне , отсюда и имя переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...