无法重新初始化DataTable – 数据表的动态数据
我有一个显示所有员工的数据表。 它对document.ready
所有员工都很好。 我有一个包含像'project_manager' & 'team_leader'
这样的员工类型的select标签,在更改员工类型时,我调用了一个函数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 });
数据表中的技术说明部分解释了此警告的原因。 来自那里的相关信息:
当已初始化所选节点的DataTable实例时,通过将选项传递给DataTables构造函数对象来触发此错误。 例如:
$('#example').dataTable( { paging: false } ); $('#example').dataTable( { searching: false } );
上述文档解释了两种处理此问题的方法。
- 检索:它解释了如何在初始化后应用其他选项(即使之前未初始化也可以工作),方法是将retrieve设置为true ,如下所示:
table = $('#example').DataTable( { retrieve: true, paging: false } );
-
销毁:在这种情况下,您可以通过调用
table.destroy();
显式地销毁对象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();