У меня была страница, которая инициализировала пустую dataTable и получала данные json с помощью $ .getJSON () после изменения jquery из select. Затем он добавлялся в таблицу с помощью .fnAddData.Like this:
oTableDisk = $('#disk_connection_table').dataTable({
"bJQueryUI": true,
"iDisplayLength": 30,
"oLanguage": {
"sLengthMenu": tableLength
},
"fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull){
$(nRow).attr('id', aData[0] + "|<?php echo $this->hostInfo['name']; ?>|<?php echo $this->hostInfo['id']; ?>");
return nRow;
},
"aoColumns": [{"bSearchable": false, "bVisible": false}, null, null, null, null, null, null]
});
$('#disk_switch').change(function(){
$.getJSON('/host/getavailableports?type=disk&switch=' + $('#disk_switch option:selected').val(), function(data){
if(data[0]){
data.reverse();
oTableDisk.fnClearTable();
$.each(data, function(index){
//console.log(data[index]);
oTableDisk.fnAddData([data[index]['Item1'],
data[index]['Item2'],
data[index]['Item3'],
data[index]['Item4'],
data[index]['Item5'],
data[index]['Item6'],
data[index]['Item8']]);
});
enableEditable(oTableDisk);
}
});
});
Это работало нормально до тех пор, пока нам не потребовалось обработать более 500 строк информации и не работало с IE из-за ошибок «скрипт перестал отвечать».
Теперь я не инициализирую пустую таблицу данныхвообще, но создание одного, когда меню выбора изменяется следующим образом:
$('#disk_switch').change(function(){
oTableDisk = $('#disk_connection_table').dataTable({
"bJQueryUI": true,
"iDisplayLength": 30,
"bProcessing": true,
"bServerSide": true,
"bDestroy": true,
"sAjaxSource": '/host/getavailableports?type=disk&switch=' + $('#disk_switch option:selected').val(),
"aaSorting": [[0, "asc"]],
"oLanguage": {
"sLengthMenu": tableLength
},
"fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull){
$(nRow).attr('id', aData[0] + "|<?php echo $this->hostInfo['name']; ?>|<?php echo $this->hostInfo['id']; ?>");
return nRow;
},
"aoColumns": [{"bSearchable": false, "bVisible": false}, null, null, null, null, null, null],
"fnDrawCallback": function() {
$( oTableDisk.fnGetNodes() ).click( function () {
enableEditable(oTableDisk);
} );
}
});
После переписывания контроллера и модели для поддержки запросов с ограничением, где и в порядке аргументов я получаю данные обратно, и это похоже на мойОбъект JSON правильно отформатирован.Проблема в том, что теперь у меня нет функции разбиения на страницы.или сортировка функциональности.В таблице показаны стрелки нумерации страниц в виде серого, и нажатие на заголовки столбцов на самом деле ничего не делает.Над нумерацией страниц указывается «Показано от 1 до 30 из 30 записей (отфильтровано из 483 записей)», что является правильным для запроса.
Я думаю, что это связано с загрузкой таблицы после того, как страница былазагружен, но я не знаю, как это исправить.