Impossible de réinitialiser les données DataTables - données dynamiques pour DataTables
j'ai une table montrant tous les employés.
Il fonctionne très bien pour tous les employés sur document.ready
.
J'ai une balise select contenant le type d'employés comme 'project_manager' & 'team_leader'
, et sur le changement de type d'employé, je suis l'appel d'une fonction get_employees(emp_type)
et en passant le type d'employé sélectionné.
il obtient des données désirées et appropriées dans la réponse ajax, mais lancer 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 sans succès.
également essayé pour
$('#example').dataTable().fnClearTable();
$('#example').dataTable().fnDestroy();
il est effacement de la table et affichage des données nouvellement ajoutées, mais ajout de nouvelles images de tri avec le nom de la colonne à chaque fois.
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.
3 réponses
dans la version actuelle de DataTables (1.10.4) vous pouvez simplement ajouter destroy:true
à la configuration pour s'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 section de datatables explique la raison de cet avertissement. Informations pertinentes à partir de là:
cette erreur est déclenchée en passant des options à des DataTables objet constructeur lorsque l'instance datable pour le noeud sélectionné a déjà été initialisé. Par exemple:
$('#example').dataTable( { paging: false } ); $('#example').dataTable( { searching: false } );
la documentation ci-dessus explique deux façons de traiter cette question.
- extraire: explique comment appliquer des options supplémentaires après l'initialisation (fonctionne même si elle n'est pas initialisée avant) en utilisant le paramètre récupérer true comme suit:
table = $('#example').DataTable( { retrieve: true, paging: false } );
Détruire: Dans ce cas, vous pouvez détruire l'objet explicitement en appelant
table.destroy();
et de créer à nouveau la table. Ou vous pouvez simplement passerdestroy: true
option telle que mentionnée dans l'acceptation réponse.table = $('#example').DataTable( { paging: false } ); table.destroy(); table = $('#example').DataTable( { searching: false } );
Utilisation de la détruire:la véritable option:
$('#example').DataTable( { destroy: true, searching: false } );
Note: Cette erreur peut aussi se produire si vous incluez votre fichier javascript qui crée le dataTable plusieurs fois. J'utilisais les 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();