Таблицы данных для обработки на стороне сервера с помощью jQuery

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

Мой код JS

this.$("#example").DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": "../employees.json",
            "columns": [{
                "data": "Name"
            }, {
                "data": "Age"
            }, {
                "data": "Country"
            }, {
                "data": "Address"
            }, {
                "data": "Married"
            }]
        });

Datatable отображает JSON в формате таблицы. Но операции сортировки, разбивки на страницы и поиска не работают. Он показывает все результаты на первой странице независимо от того, какое значение я выбрал из раскрывающегося списка.

Также внизу отображается сообщение типа «Показано от 0 до 0 из 0 записей (отфильтровано из общего количества записей NaN)»

Если я пропущу serverSide: false. все работает нормально. Но я хочу, чтобы серверная обработка того же

Любая помощь будет оценена


person Kenny    schedule 03.09.2015    source источник
comment
вы работаете с php или MVC?   -  person Frebin Francis    schedule 03.09.2015
comment
какую платформу вы используете на стороне сервера?   -  person J Santosh    schedule 03.09.2015
comment
Я хочу сделать это с помощью javascript. в основном я делаю это с backbone.js   -  person Kenny    schedule 03.09.2015
comment
Недавно я ответил на аналогичный вопрос: stackoverflow.com/questions/32053336 / jquery-datatables-does-not-Распознает-данные-загруженные / 32144889 # 32144889   -  person markpsmith    schedule 03.09.2015
comment
@markpsmith благодарит за решение, но не хочу использовать .net. Мне нужно решение только на JS.   -  person Kenny    schedule 03.09.2015
comment
«Но мне нужна обработка на стороне сервера» противоречит «Мне нужно решение только на JS».   -  person markpsmith    schedule 03.09.2015
comment
@markpsmith Я хочу сделать это с обработкой запросов ajax. В backbone.js или чистом javascript / jquery   -  person Kenny    schedule 03.09.2015
comment
Я столкнулся с той же проблемой. При использовании серверной обработки вы должны установить для свойства iTotalDisplayRecords значение json response. Пожалуйста, погуглите "iTotalDisplayRecords".   -  person toshi    schedule 17.01.2016


Ответы (4)


Когда вы устанавливаете для serverSide значение true, вы сообщаете DataTables, что сервер будет обрабатывать всю сортировку и разбиение на страницы вместо DataTables. DataTables просто отображает данные с сервера как есть.

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

У вас есть два варианта:

  1. Оставьте serverSide ложным. Разрешите серверу отправлять DataTables все данные и позвольте ему обрабатывать сортировку, разбиение на страницы и упорядочивание. Обычно этого достаточно для умеренного количества записей (50000 записей или меньше).
  2. Измените сервер, чтобы правильно обрабатывать сортировку, разбиение по страницам и упорядочивание в соответствии с запросами DataTables. Вам потребуется предоставить дополнительную информацию (например, общее количество записей для разбиения на страницы), потому что DataTables не может вывести эту информацию из данных объемом в 1 страницу. См. https://datatables.net/manual/server-side#Sent-parameters чтобы увидеть, какие параметры DataTables отправляет на сервер, и https://datatables.net/manual/server-side#Returned-data, чтобы узнать, что должен вернуть сервер.
person Jin Kim    schedule 19.05.2016

В возвращении вашей формы json должно быть следующее:

iTotalRecords : (Total rows),
iTotalDisplayRecords : (Total rows to display in your grud),
aaData : {(Your data)}.

Работает для меня.

person Cristhian Huangal    schedule 10.12.2016

Вот некоторые параметры, которые вы должны установить

e.g

this.$("#example").DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": "../employees.json",
            "columns": [{
                "data": "Name"
            }, {
                "data": "Age"
            }, {
                "data": "Country"
            }, {
                "data": "Address"
            }, {
                "data": "Married"
            }],            
            'scrollCollapse': true,
            'ordering': true,
            'order': [[0, 'asc']],
            'searching': true,
            'paging': true,
        });
person Alperen Talaslıoğlu    schedule 03.09.2015
comment
Я думаю, что значения этих параметров по умолчанию верны только - person Kenny; 03.09.2015

Это может быть поздно, но вы можете использовать fnInfoCallback, например:

"fnInfoCallback": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
                           if (isNaN(iTotal)) { 
                           return '';
                           }

                    return "Showing " + iStart +" to "+ iEnd + " of " + iTotal + " entries";
                      },
person kratos    schedule 01.09.2017