2017-07-11 4 views
1

Je charge jQuery Datatable sur la fonction document ready et je crée des lignes de corps de table à partir de la réponse ajax mais les données ne sont pas disponibles et ne font aucun tri et comptage des lignes ajoutées dans la table.Comment charger Jquery DataTable sur des lignes créées dynamiquement à partir d'une réponse ajax?

<table id="mytable">     
    <thead>     
    <th>Name</th> 
    <th>Email</th> 
    </thead> 
    <tbody id="tableBody"></tbody> 
</table> 
function getUsers(){ 
    $.ajax({ 
    url: "/user.php", 
    type: 'POST', 
    dataType: 'json', 
    success: function(json) {    
     var tr; 
     for (var i = 0; i < json.length; i++) { 
     tr = $('<tr/>'); 
     tr.append("<td><a>" + json[i].first_name + ' ' + json[i].last_name + "</a></td>"); 
     tr.append("<td><a href='mailto:" + json[i].email + "'>" + json[i].email + "</a></td>"); 
     $("#mytable > tbody").append(tr);      
     } 
    }, 
    }); 
} 

$(document).ready(function() { 
    getUsers(); 
    $('#mytable').dataTable(); 
}); 

Répondre

0

Essayez cette fonction

function getUsers(){ 
    $.ajax({ 
     url: "/user.php", 
     type: 'POST', 
     dataType: 'json', 
     success: function(json) { 
      var tr; 
      for (var i = 0; i < json.length; i++) { 
       tr = '<tr>'; 
       tr+="<td><a>"+json[i].first_name +' '+json[i].last_name+"</a></td>"; 
       tr+="<td><a href='mailto:"+ json[i].email +"'>"+ json[i].email + "</a></td>"; 
       tr+='</tr>'; 
       $("#tableBody").append(tr); 
      } 

     }, 
    }); 
} 

Je chose qu'il va travailler pour vous.

+0

Oui, j'ai essayé, mais cela n'a pas fonctionné. Donc, je l'écris dans une méthode séparée, c'est-à-dire les lignes créées dynamiquement, puis j'ai appelé ajax succès. Et en dessous, j'ai appelé $ ('# mytable'). DataTable(); et ça a marché. – ParminderBrar

+0

Ok, ça va. –

+1

J'ai juste manqué de mettre ce '$ (" # tableBody "). Append (tr);' à l'intérieur de la boucle for –