reinitialize reiniciar limpiar jquery ajax dynamic datatable destroy

jquery - reiniciar - reinitialize datatable



No se puede reiniciar DataTable: datos dinĂ¡micos para datatable (3)

Pruebe algo como a continuación

var $table=$(''#example'').dataTable({ "aaData": response.data, }); $table.fnDestroy();

Tengo una tabla de datos que muestra a todos los empleados. Está funcionando bien para todos los empleados en document.ready . Tengo una etiqueta de selección que contiene el tipo de empleados como ''project_manager'' & ''team_leader'' , y en el cambio de tipo de empleado estoy llamando a una función get_employees(emp_type) y pasando el tipo de empleado seleccionado.

Está obteniendo los datos deseados y adecuados en la respuesta ajax, pero lanzando una advertencia

DataTables warning: table id=example - Cannot reinitialise DataTable. For more information about this error, please see http://datatables.net/tn/3

Traté de destruirlo, pero no tuve suerte.

también intentado por

$(''#example'').dataTable().fnClearTable(); $(''#example'').dataTable().fnDestroy();

es la tabla de compensación y muestra los datos recién añadidos, pero agrega nuevas imágenes de ordenación con el nombre de columna cada vez.

Aquí está mi fragmento de código.

$(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, }); } }); }

Gracias por adelantado.


En la versión actual de DataTables (1.10.4), simplemente puede agregar destroy:true a la configuración para asegurarse de que cualquier tabla que ya esté presente se elimine antes de reiniciarse.

$(''#example'').dataTable({ destroy: true, aaData: response.data });


Esta sección de notas técnicas de tablas de datos explica el motivo de esta advertencia. Información relevante de allí:

Este error se desencadena al pasar opciones a un objeto constructor DataTables cuando la instancia de DataTable para el nodo seleccionado ya se ha inicializado. Por ejemplo:

$(''#example'').dataTable( { paging: false } ); $(''#example'').dataTable( { searching: false } );

La documentación anterior explica dos formas de lidiar con esto.

  1. Recuperar: explica cómo aplicar opciones adicionales después de la inicialización (funciona incluso si no se ha inicializado antes) mediante el uso de configuración de recuperación a verdadero de la siguiente manera:

table = $(''#example'').DataTable( { retrieve: true, paging: false } );

  1. Destruir: en este caso, puedes destruir el objeto explícitamente llamando a table.destroy(); y luego creando la tabla de nuevo. O simplemente puede pasar la opción destroy: true como se menciona en la respuesta aceptada.

    table = $(''#example'').DataTable( { paging: false } ); table.destroy(); table = $(''#example'').DataTable( { searching: false } );

Usando la opción destroy: true:

$(''#example'').DataTable( { destroy: true, searching: false } );

Nota: Este error también puede ocurrir si incluye su archivo javascript que crea la tabla de datos varias veces. Estaba usando mosaicos de apache y lo incluí en la base así como en la definición extendida, que también resultó en este error.