У меня есть 8000 строк данных в формате JSON, доступных на стороне клиента, после вызова Ajax в базе данных в JavaScript, который мне нужно заполнить в таблицах HTML для отображения.Pagination не согласуется/работает
Я пытаюсь запустить код ниже, но я сталкиваюсь со следующими проблемами: , так как у меня есть большие данные, когда я запрашиваю в веб-интерфейсе, выполняется несколько вызовов Ajax, чтобы извлекать данные из базы данных и отображать их на HTML-страницу.
Я столкнулся со следующими проблемами:
- Я вижу пагинацию только тогда, когда результат очень большой
- При появлении нумерации страниц, все данные загружаются на странице в первом, а не 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>
Без доступа к таблице (возможно, jsFiddle, если ваши данные не являются конфиденциальными) было бы трудно сказать. Я бы предпочел не повторно инициализировать таблицу, а создать ее один раз, а затем очистить ее и заполнить ее снова в соответствии с http://datatables.net/forums/discussion/5158/how-do-i-reload-datatables-with -new-JSON-данных. Будете ли вы перезагружать данные с сервера? – annoyingmouse
В вашем коде вы уничтожаете таблицу, которую вы только что создали, не имеет большого смысла. Вы упомянули, что используете несколько вызовов Ajax, вызываете ли вы свою функцию, когда ** все ** Аякс-звонки успешны? Покажите свой код, если это возможно. Также, какую версию DataTables вы используете? –
Я обновил вопрос с помощью кода вызова ajax в конце вопроса вопроса –