无法重新初始化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 } ); 

上述文档解释了两种处理此问题的方法。

  1. 检索:它解释了如何在初始化后应用其他选项(即使之前未初始化也可以工作),方法是将retrieve设置为true ,如下所示:
 table = $('#example').DataTable( { retrieve: true, paging: false } ); 
  1. 销毁:在这种情况下,您可以通过调用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();