Table de construction DataTables issue du problème Ajax, ok du fichier, paramètre manquant? aucune donnée disponible

J’ai un problème avec Datatables en remplissant les données de javascript.

Si je charge le même résultat javascript à partir d’un fichier, il fonctionne parfaitement avec l’atsortingbut “ajax” de la définition du paramètre Datatable. J’ai appris que je devais utiliser l’atsortingbut “data” à la place.

Le fichier contient: {“data”: [{“meter”: “test”, “id”: 15, “desc”: “testDesc”}]}

Ceci est ma fonction:

$(document).ready(function () { dataset = { "data": [{ "meter": "test", "id": 15, "desc": "testDesc" }] }; //var dataset = [ ['test','15','testDesc'] ]; $('#MeterDataTable').DataTable({ //"ajax": 'DataTables-1.10.7/examples/ajax/data/meterDataJsonDown.txt', "data": dataset, "columns": [{ "data": "meter" }, { "data": "id" }, { "data": "desc" }] }); //saveToFile(dataset); // alert('dataset is '+ dataset); }); 

HTML

 
meter id desc
meter id desc

Cela fonctionne mais il faut formater les données renvoyées par javascript jSon en supprimant les noms de colonne.

 $(document).ready(function () { var dataset = [ ['test', '15', 'testDesc'] ]; $('#MeterDataTable').DataTable({ "data": dataset, "columns": [{ "title": "meter" }, { "title": "id" }, { "title": "desc" }] }); }); 

Mise à jour: http://jsfiddle.net/j5a390d9/

Votre script DataTables est obsolète. L’ancien script utilisait une syntaxe différente pour charger des tables de données avec des données JavaScript.

Veuillez vous référer à ce JSfiddle pour que votre exemple fonctionne. Vous pouvez utiliser la version suivante du script DataTables:

 https://cdn.datatables.net/1.10.0/js/jquery.dataTables.js 

J’ai enfin une fonction de travail selon mes exigences initiales.

Comme mon object jSon renvoyé contenait des informations sur le nom de colonne, [{“meter”: “test”, “id”: 15, “desc”: “testDesc”}], je souhaitais utiliser ce format tel quel au lieu de devoir le décaper. le contenu comme dans le cas où l’object retourné est modifié, la table fonctionne de la même manière.

Ça ne fonctionne pas encore dans jsFiddle. http://jsfiddle.net/j5a390d9/5/ mais fonctionne correctement dans mon application. Raison pour jsFiddle est que je fais un appel ajax à un service Web non exposé sur Internet. J’ai essayé d’obtenir une réponse d’un fichier téléchargé sur mon site Web, mais ne peut pas en raison de la création de scripts entre sites. Essayé un proxy mais quand même.

Quoi qu’il en soit, c’est mon code de travail.

 var dataset ; function meterData() { $.ajax({ type: "POST", url: "jSonServices.asmx/getAllMeters", contentType: "application/json; charset=utf-8", dataType: "json", async: false, cache: false, timeout: 10000, success: function (msg) { if ((msg).length < 5) alert("No data Found!"); else { //dataset = [{ "meter": "test", "id": 15, "desc": "testDesc"}]; // !important! Parse msg.d string into object var obj = JSON.parse(msg.d); $('#MeterDataTable').DataTable( { "aaData": obj, "aoColumns": [ { "mData": "meter" }, { "mData": "id" }, { "mData": "desc" } ] } ); } }, error: function (e) { alert("not ok" + e.responseText); } }); } $(document).ready(function () { meterData(); });