J'ai une table de données montrant tous les employés. Cela fonctionne bien pour tous les employés sur document.ready
. J'ai une balise de sélection contenant le type d'employés comme 'project_manager' & 'team_leader'
, Et lors du changement de type d'employé, j'appelle une fonction get_employees(emp_type)
et je passe le type d'employé sélectionné.
Il obtient les données souhaitées et appropriées dans la réponse ajax, mais lance un avertissement
DataTables warning: table id=example - Cannot reinitialise DataTable. For more information about this error, please see http://datatables.net/tn/3
J'ai essayé de le détruire, mais pas de chance.
également essayé pour
$('#example').dataTable().fnClearTable();
$('#example').dataTable().fnDestroy();
il efface la table et affiche les données nouvellement ajoutées, mais ajoute à chaque fois de nouvelles images de tri avec le nom de la colonne.
Voici mon extrait de code.
$(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,
});
}
});
}
Merci d'avance.
Dans la version actuelle de DataTables (1.10.4), vous pouvez simplement ajouter destroy:true
à la configuration pour vous assurer que toute table déjà présente est supprimée avant d'être réinitialisée.
$('#example').dataTable({
destroy: true,
aaData: response.data
});
Cette note technique La section des tables de données explique la raison de cet avertissement. Informations pertinentes à partir de là:
Cette erreur est déclenchée en passant des options à un objet constructeur DataTables lorsque l'instance DataTable du nœud sélectionné a déjà été initialisée. Par exemple:
$('#example').dataTable( { paging: false } ); $('#example').dataTable( { searching: false } );
La documentation ci-dessus explique deux façons de résoudre ce problème.
table = $('#example').DataTable( { retrieve: true, paging: false } );
Détruire: dans ce cas, vous pouvez détruire explicitement l'objet en appelant table.destroy();
puis en créant à nouveau la table. Ou vous pouvez simplement passer l'option destroy: true
Comme mentionné dans la réponse acceptée.
table = $('#example').DataTable( { paging: false } ); table.destroy(); table = $('#example').DataTable( { searching: false } );
Utilisation de l'option destroy: true:
$('#example').DataTable( { destroy: true, searching: false } );
Remarque: Cette erreur peut également se produire si vous incluez votre fichier javascript qui crée le dataTable plusieurs fois. J'utilisais des tuiles Apache et je l'ai inclus dans la base ainsi que dans la définition étendue, ce qui a également entraîné cette erreur.
Essayez quelque chose comme ci-dessous
var $table=$('#example').dataTable({
"aaData": response.data,
});
$table.fnDestroy();
Cela m'a aidé:
var table = $('#example').DataTable( {
// Clear previous data
destroy: true,
// Load new data with AJAX from data.json file.
ajax: "data.json"
} );