我有一个显示所有员工的数据表。它对document.ready
的所有员工都很好。我有一个包含像'project_manager' & 'team_leader'
这样的员工类型的选择标签,并且在更改员工类型时,我正在调用函数get_employees(emp_type)
并传递所选的员工类型。
它在ajax响应中得到了理想和适当的数据,但却发出了警告
DataTables warning: table id=example - Cannot reinitialise DataTable. For more information about this error, please see http://datatables.net/tn/3
我试图摧毁它,但没有运气。
也尝试过
$('#example').dataTable().fnClearTable();
$('#example').dataTable().fnDestroy();
它是清除表并显示新附加的数据,但每次都添加具有列名的新排序图像。
这是我的代码片段。
$(document).ready(function() {
get_employees('all');
});
function get_employees(emp_type)
{
$.ajax({
url: '../ajax_request.php',
type: "POST",
data: {
action: "admin_get_all_employees",
type: emp_type
},
success: function(response) {
var response = jQuery.parseJSON(response);
// $('#example').destroy(); tried this but haven’t worked
$('#example').dataTable({
"aaData": response.data,
});
}
});
}
提前致谢。
在当前版本的DataTables(1.10.4)中,您只需将destroy:true
添加到配置中,以确保在重新初始化之前已删除任何已存在的表。
$('#example').dataTable({
destroy: true,
aaData: response.data
});
来自datatables的This tech note部分解释了此警告的原因。来自那里的相关信息:
当已初始化所选节点的DataTable实例时,通过将选项传递给DataTables构造函数对象来触发此错误。例如:
$('#example').dataTable( { paging: false } ); $('#example').dataTable( { searching: false } );
上述文档解释了处理此问题的两种方法。
table = $('#example').DataTable( { retrieve: true, paging: false } );
table.destroy();
然后再次创建表来显式销毁对象。或者您可以简单地传递destroy: true
选项,如接受的答案中所述。
table = $('#example').DataTable( {
paging: false
} );
table.destroy();
table = $('#example').DataTable( {
searching: false
} );
使用destroy:true选项:
$('#example').DataTable( { destroy: true, searching: false } );
注意:如果您包含多次创建dataTable的javascript文件,也可能会发生此错误。我正在使用apache磁贴并将其包含在base和扩展定义中,这也导致了这个错误。
尝试类似下面的内容
var $table=$('#example').dataTable({
"aaData": response.data,
});
$table.fnDestroy();
这对我有所帮助:
var table = $('#example').DataTable( {
// Clear previous data
destroy: true,
// Load new data with AJAX from data.json file.
ajax: "data.json"
} );