1

У меня есть 8000 строк данных в формате JSON, доступных на стороне клиента, после вызова Ajax в базе данных в JavaScript, который мне нужно заполнить в таблицах HTML для отображения.Pagination не согласуется/работает

Я пытаюсь запустить код ниже, но я сталкиваюсь со следующими проблемами: , так как у меня есть большие данные, когда я запрашиваю в веб-интерфейсе, выполняется несколько вызовов Ajax, чтобы извлекать данные из базы данных и отображать их на HTML-страницу.

Я столкнулся со следующими проблемами:

  1. Я вижу пагинацию только тогда, когда результат очень большой
  2. При появлении нумерации страниц, все данные загружаются на странице в первом, а не 10 или 25 и поэтому мой скрипт jQuery перестает отвечать на запросы. Но после того, как я переключу фильтр размера пейджинга - 10,25,50 или 100, появится правильное количество результатов.

Код, который я пытаюсь, приведен ниже.

HTML:

<table id="tableprint" class="data-grid" size="50"> 
     <thead> 
     <tr> 
      <th>Name</th> 
      <th>Age</th> 
      <th>Profession</th> 
      <th>Address</th> 
      <th>Comments</th> 
     </tr> 
     </thead> 
    </table> 

JAVASCRIPT:

success: function(data) { 
    $('#tableprint').dataTable({ 
     "aaData": jsonArrayOfjsonObjects.json, //this is a json with 8000 table rows of data 
     "aoColumnsDef": [{ 
     "mData": "name" 
     }, { 
     "mData": "age" 
     }, { 
     "mData": "profession" 
     }, { 
     "mData": "address" 
     }, { 
     "mData": "comments", 
     "defaultContent": "Empty" 
     }, ], 
     "bDestroy": true 
    }).fnDestroy(); 

    $('#tableprint').dataTable({ 
     "bDestroy": true 
    }).fnDestroy(); 
} 

FYI, я разрушив DataTable экземпляр, как я получил "не reinstantiate DataTable" ошибка, и это было рекомендуемым решением для этого.

$.ajax({ 
     type : 'POST', 
     url : 'sendData', 
     data : { //Send form data to the Servlet 
      sid : sid, 
      mpid : mpid 
     }, 
     success : function(data) { 
      $('#tableprint').dataTable({ 
       "aaData" : data.ActionsArr, 
       "bPaginate":"true", 
       "sPaginationType":"full_numbers", 
       // etc.. 
     } 

выше Ajax Post, называется каждый раз, когда пользователь нажимает на кнопку отправки на форме с различными sid и mpid значений.

Включенные JS файлы:

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script src="https://cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script> 
+0

Без доступа к таблице (возможно, jsFiddle, если ваши данные не являются конфиденциальными) было бы трудно сказать. Я бы предпочел не повторно инициализировать таблицу, а создать ее один раз, а затем очистить ее и заполнить ее снова в соответствии с http://datatables.net/forums/discussion/5158/how-do-i-reload-datatables-with -new-JSON-данных. Будете ли вы перезагружать данные с сервера? – annoyingmouse

+0

В вашем коде вы уничтожаете таблицу, которую вы только что создали, не имеет большого смысла. Вы упомянули, что используете несколько вызовов Ajax, вызываете ли вы свою функцию, когда ** все ** Аякс-звонки успешны? Покажите свой код, если это возможно. Также, какую версию DataTables вы используете? –

+0

Я обновил вопрос с помощью кода вызова ajax в конце вопроса вопроса –

ответ

-1

Добавьте следующее:

"paging": true, 
"pageLength": 25, //or whatever you want the page length to be 

после этой строки:

"aaData" : jsonArrayOfjsonObjects.json, 
Смежные вопросы