У меня есть раздел вкладок, созданный с помощью начальной загрузки 3. Для одной из вкладок содержимое вкладки является датируемым. Данные генерируются на стороне сервера и отлично работают при начальной загрузке. Тем не менее, я пытаюсь использовать ajax.reload () внутри функции onchange, и данные не обновляются. Я также пытался использовать метод clear (), но данные не очищаются. Я проверил, что функция запускается и что возвращаемый ответ AJAX является допустимым JSON, а не пустым. В моей консоли нет ошибок, просто ничего не происходит.
Я использую Datatables 1.10, а источник напрямую из cdn (https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js).
Я искал StackOverflow и форум Datatbles для этой проблемы. у других это было, и похоже, что принято решение $('#TableID').DataTable().ajax.reload()
, которое я делаю. Я также попытался сохранить таблицы данных в таблице var и попробовать table.ajax.reload (), а также передать функцию обратного вызова и явно установить обновление страницы на true. Я возвращаюсь из функции обратного вызова, но ошибок по-прежнему нет, но изменений нет.
HTML:
<div id="tab_datatable" class="tab-pane fade">
<table id="example" class="display" style="width:100%">
<thead>
<tr>
<th>Year</th>
<th>Course</th>
<th>Title</th>
<th>Enrollment</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
Мой код js создает таблицу, которая отлично работает:
$( document ).ready(function() {
var $table = $('#example').DataTable({
scrollCollapse: false,
paging: true,
pagingType: 'simple_numbers',
lengthMenu: [[10, 25, 50, 100, -1], [10, 25, 50, 100, 'All']],
processing: true,
serverSide: true,
ajax: {
url: myURL,
data: {
campus: $campus.val(),
college: $college.val(),
year: $term.val(),
draw: parseInt(1),
length: (10),
start: parseInt(1)
}
},
searching: false,
info: false,
});
});
Таблица отображается правильно в "примере" div.
У меня есть функция updatePage (), которая срабатывает при изменении одного из трех параметров меню на странице.
$(document).on('change', '.dynamic', function(){
updatePage();
});
//Updates dynamic content on page
function updatePage()
{
//sessionStorage
sesssionStateStorage('campus', $campus.val());
sesssionStateStorage('college', $college.val());
sesssionStateStorage('term', $term.val());
console.log($term.val()); //confirming that value is updating
//Refresh datatable
console.log($table); //Shows table object so I know it exists
//$table.clear(); //This does't work; no errors but no change
//$table.ajax.reload() //doesn't work; no errors but no change
//$('#example').DataTable().ajax.reload(); //doesn't work; no errors but no change
$('#example').DataTable().ajax.reload(test(), true); //Confirming that I see test logging from test() function, but data still doesn't update
}
function test()
{
console.log('in test');
console.log('table object: ' + $table)
}
Любая помощь очень ценится.
РЕДАКТИРОВАТЬ: Забыл указать, что я также отслеживаю сетевые вызовы в своей консоли, и когда изменяется одно из значений меню, я вижу, что инициируется новый вызов AJAX и возвращаются правильные данные. Таким образом, проблема в действительности заключается в том, что таблица не отображается должным образом после ajax.reload ().