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.

16
demandé sur Pramod 2014-07-03 09:44:37

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
});
45
répondu Coin_op 2014-11-17 08:50:43

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.

  1. 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
} );
  1. 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 passer destroy: 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.

2
répondu user3885927 2016-07-07 16:18:00

Essayez quelque chose comme ci-dessous

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


    $table.fnDestroy();
0
répondu Vicky 2014-07-03 06:46:23