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.
- 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 } );
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óndestroy: 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.