J'utilise le plugin jQuery datatables et charge mes données que j'ai chargées dans le DOM en bas de page et lance le plugin de cette manière:
var myData = [
{
"id": 1,
"first_name": "John",
"last_name": "Doe"
}
];
$('#table').dataTable({
data: myData
columns: [
{ data: 'id' },
{ data: 'first_name' },
{ data: 'last_name' }
]
});
Maintenant. après avoir effectué une action, je veux obtenir de nouvelles données en utilisant ajax (mais pas l'option ajax intégrée dans les tables de données - ne vous méprenez pas!) et mettre à jour la table avec ces données. Comment puis-je faire cela en utilisant l'API Datatables? La documentation est très déroutante et je ne trouve pas de solution. Toute aide sera très appréciée. Merci.
Réponses:
SOLUTION: (Remarque: cette solution est pour les tables de données version 1.10.4 (pour le moment) et non pour la version héritée).
CLARIFICATION Selon la documentation de l' API (1.10.15), l'API est accessible de trois manières:
La définition moderne de DataTables (cas supérieur de chameau):
var datatable = $( selector ).DataTable();
La définition héritée de DataTables (cas du chameau inférieur):
var datatable = $( selector ).dataTable().api();
En utilisant la
new
syntaxe.var datatable = new $.fn.dataTable.Api( selector );
Ensuite, chargez les données comme ceci:
Utilisez
draw(false)
pour rester sur la même page après la mise à jour des données.Références API:
https://datatables.net/reference/api/clear ()
https://datatables.net/reference/api/rows.add ()
https://datatables.net/reference/api/draw ()
la source
datatable.clear().rows.add(newDataArray).draw()
). À partir de ce commentaire, j'utilise la version 1.10.18Vous pouvez utiliser:
Jsfiddle
Mettre à jour. Et oui, la documentation actuelle n'est pas très bonne, mais si vous êtes d'accord avec les anciennes versions, vous pouvez vous référer à la documentation héritée .
la source
Vous devez détruire l'ancienne instance de la table de données, puis réinitialiser la table de données
Vérifiez d'abord si une instance de table de données existe en utilisant $ .fn.dataTable.isDataTable
s'il existe, détruisez-le puis créez une nouvelle instance comme celle-ci
la source
Voici la solution pour les anciens datatable 1.9.4
la source
Dans mon cas, je n'utilise pas l'api ajax intégrée pour alimenter Json dans la table (cela est dû à un formatage plutôt difficile à implémenter dans le rappel de rendu de la table de données).
Ma solution a été de créer la variable dans la portée externe des fonctions onload et la fonction qui gère l'actualisation des données (
var table = null
par exemple).Ensuite, j'instancie ma table dans la méthode au chargement
et enfin, dans la fonction qui gère l'actualisation, j'appelle la méthode clear () et destroy (), récupère les données dans la table html et ré-instancie la table de données, en tant que telle:
J'espère que quelqu'un trouvera cela utile!
la source