2016-04-15 9 views
0

Ich habe 2 Databases jsfiddle mit 3 json Quellen. Es works sehr gut.Datatables - 2 verschiedene JSON Quellen zusammen

Aber ich brauche alle json Dateien ändern:

Original:

{ 
    "data": [{ 
     "id": "11", 
     "cat1": "add1.1", 
     "cat2": "add1.2", 
     "cat3": "add1.3" 
    }, { 
     "id": "12", 
     "cat1": "add2.1", 
     "cat2": "add2.2", 
     "cat3": "add2.3" 
    }] 
} 

Neu: entfernt {"data": in ersten 2 Zeilen und letzten }

[{ 
    "id": "11", 
    "cat1": "add1.1", 
    "cat2": "add1.2", 
    "cat3": "add1.3" 
}, { 
    "id": "12", 
    "cat1": "add2.1", 
    "cat2": "add2.2", 
    "cat3": "add2.3" 
}] 

Ich hoffe entfernen, wenn .data in jsfiddle und geändert "ajax": url zu:

"ajax": { 
    "url": url, 
    "dataSrc": "" 
}, 

wird es funktioniert.

Original:

$.when(call1, call2).done(function(a1, a2){ 
     var data = a1[0].data; 
     data.splice.apply(data, [2, 0].concat(a2[0].data)); 
     drawTable("#tab1","",data) 
    }); 

drawTable("#tab2","https://api.myjson.com/bins/4lpow","") 

function drawTable(id, url, data) { 
    $(id).dataTable({ 
    "ajax": url, 
    data: data, 
    columnDefs: [ 
     { className: "hide", "targets": [ 0 ] }, 
    ], 
    order: [], 
    ordering: false,   
    columns: [ 
     { "data": "id"}, 
     { "data": "cat1"}, 
     { "data": "cat2"}, 
     { "data": "cat3"} 
    ] 
    }); 
} 

Neu:

$.when(call1, call2).done(function(a1, a2){ 
     //removed .data 
     var data = a1[0]; 
     //removed .data 
     data.splice.apply(data, [2, 0].concat(a2[0])); 
     drawTable1("#tab11","",data) 
    }); 

drawTable1("#tab21","https://api.myjson.com/bins/3tuls","") 

function drawTable1(id, url, data) { 
     $(id).dataTable({ 
     "ajax": { 
      "url": url, 
      "dataSrc": "" 
     }, 
     data: data, 
     columnDefs: [ 
      { className: "hide", "targets": [ 0 ] }, 
     ], 
     order: [], 
     ordering: false,   
     columns: [ 
      { "data": "id"}, 
      { "data": "cat1"}, 
      { "data": "cat2"}, 
      { "data": "cat3"} 
     ] 
     }); 
    } 

Problem ist, dass es mit Warnung arbeitet in jsfiddle:

Bitte benutzen Sie Anfrage POST

Wenn ich testen diese file lokal Warnung ist:

Tables Warnung: Tabelle id = tab11 - ungültiger JSON-Antwort. Weitere Informationen zu diesem Fehler finden Sie unter http://datatables.net/tn/1

+0

Es gibt einen Syntaxfehler in jsFiddle, sonst wird Ihr Code funktioniert, sehen https://jsfiddle.net/xwp3jhq1/1/ –

+0

Ja, so scheint es, diese separat funktioniert . Aber zusammen nur mit Warnung. Und ich brauche nur Warnung entfernen. Vielleicht ist das beste Testen [Datei] (https://www.dropbox.com/s/c6suvymg13dmuy8/so.html) lokal. – jezrael

+1

@Scott Boston Sicher, adfed Kommentar und vote für löschen. – jezrael

Antwort

2

Sie nicht beide ajax und data Optionen in drawTable1 Funktion zur Verfügung stellen können.

Verwenden Sie den Code unten statt:

function drawTable1(id, url, data) { 
    var opt; 
    if (url !== "") { 
     opt = { 
      ajax: { 
       url: url, 
       dataSrc: "" 
      } 
     }; 
    } 
    if (data !== "") { 
     opt = { 
      data: data 
     } 
    } 

    $(id).dataTable($.extend({ 
     columnDefs: [{ 
      className: "hide", 
      targets: [0] 
     }, ], 
     order: [], 
     ordering: false, 
     columns: [ 
      { "data": "id"}, 
      { "data": "cat1"}, 
      { "data": "cat2"}, 
      { "data": "cat3"} 
     ] 
    }, opt)); 
} 
+0

Super, es funktioniert sehr gut. Sie können die Frage auch auffrischen. Vielen Dank. – jezrael