我已将DataTables添加到表中,我使用PHP和SQL通过AJAX获取数据。在第一次加载时,执行第一次搜索后,一切正常,一切正常。但是,当第二次搜索时,在用于搜索的所有代码再次运行时,DataTable功能似乎停止工作。
我在DataTable文件的关键部分添加了一些警报,并在第一次搜索后发现它永远不会重新进入文件。
我可能需要“重新初始化”DataTable,因为在我再次搜索之后,整个数据内容都发生了变化。
花了很长时间在网上看,有许多关于Destroy和Clear等的建议但似乎没有任何效果。
这是我的代码,你可以看到我在第一次搜索后设置了不同的东西,但不知道如何修复它,因为排序,分页,搜索等都不起作用:
$.ajax({
type:'POST',
url:'/ITSMIS/data/asset/search.php',
data:HardwareAsset,
dataType: "html",
success:function(data){
LoadDataTableHeaders();
var NotSearched = document.getElementById("no-search-default");
var TableContainer = document.getElementById("data-table-container");
var NoSearchResults = document.getElementById("no-search-results");
if(NotSearched.style.display !== 'none'){
$(NotSearched).hide();
}
if(data){
if(TableContainer.style.display == 'none'){
$(TableContainer).show();
}
$(NoSearchResults).hide();
$('#data-table-results').html(data);
$("input:checkbox:not(:checked)").each(function() {
var DataTableColumn = "table ." + $(this).attr("name");
$(DataTableColumn).remove();
});
if ( ! $.fn.DataTable.isDataTable( '#data-table' ) ) {
$('#data-table').DataTable();
}
else{
}
}
else{
if(NoSearchResults.style.display == 'none'){
$(TableContainer).hide();
$(NoSearchResults).show();
}
}
}
})
答案 0 :(得分:1)
这应该在表已经退出时使表无效并重绘 (我发现这个后添加了'完全休息'参数:https://datatables.net/reference/api/draw())
if ( $.fn.DataTable.isDataTable( '#data-table' ) ) {
$('#data-table').DataTable().rows().invalidate().draw('full-reset');
}
else{
$('#data-table').DataTable();
}
答案 1 :(得分:1)
您可以尝试通过调用
简单地重新初始化数据表$('#data-table').DataTable({
destroy: true
});
此选项将允许Datatables销毁先前的实例(如果存在),并初始化,就像它是第一次一样。