2016-04-08 13 views
0

Ich verwende Datatables und möchte eine AJAX-Anfrage senden, um meine Daten zu erhalten.Datatables und Ajax-Datenformatierung?

Meine jQuery -

$('.valid-tags').DataTable({ 
    "ajax": { 
     "url": "/ajax/getValidTags.php", 
     "type": "POST", 
     "data": { 
      ruleID: ruleID 
     } 
    } 
}); 

Das sind die Daten aus der Ajax-Anforderung zurückgegeben -

{"data":["K":2,"B":1,"C":2]} 

Im 'K', 'B', 'C' zu sehen erwartet unter dem Tag-Namen in ihren eigenen Zeilen.

enter image description here

Meine Datentabellen laden keine Daten obwohl?

Ich muss in der Lage, jeden Schlüsselwertpaar in seiner eigenen Reihe zu wickeln diese so -

{"data":["K":2,"B":1,"C":2]} 

sein würde -

{"data":[["K":2],["B":1],["C":2]]} 

Dies ist PHP, die es baut (wo ich tun wickeln die Schlüsselwerte in einem Objekt, um es wie die oben so?) -

$validTagsArray = array(); 
$validArray = array(); 

foreach ($cursor as $key => $value) { 
    foreach ($value['AutoFix'] as $k => $v) { 
    $x = 0; 
    foreach ($v as $key => $value) { 
     $x++; 
     $validValueCount = $validTagsArray[$k] = $x; 
    } 
    } 
} 

$validArray['data'] = array($validTagsArray); 


echo json_encode($validArray); 
+2

Initialisieren Sie die Datentabelle, nachdem Sie Ihre Ajax-Funktion erhalten haben. '.success function() {$ ('. valid-tags'). DataTable()}'. Stellen Sie auch sicher, dass Sie die gleiche Anzahl von Spalten in der Tabelle haben;) –

+0

@Bruno das hat nicht funktioniert, aber danke. – Kieron606

+0

verwenden Sie 'columns.data'? (Https://datatables.net/examples/ajax/objects.html)? –

Antwort

1

ändern das Format der JSON, die Sie returnin g wie unten gezeigt. Weitere Informationen finden Sie unter Data source types.

{ 
    "data": [ 
     [ "K", 2 ], 
     [ "B", 1 ], 
     [ "C", 2 ] 
    ] 
} 

Ändern Sie Ihre Initialisierungsoptionen wie unten gezeigt.

$('.valid-tags').DataTable({ 
    "ajax": { 
     "url": "/ajax/getValidTags.php", 
     "type": "POST", 
     "data": { 
      ruleID: ruleID 
     } 
    }, 
    "columnDefs": [{ 
     "targets": 2, 
     "render": function(data, type, full, meta){ 
      return '<button type="button">Manage</button>'; 
     } 
    }] 
}); 

Siehe this jsFiddle für Code und Demonstration.

+0

Das Problem ist, ich brauche K, B, C unter Tag-Namen in separaten Zeilen. Und die Werte unter Autofixes. – Kieron606

+0

@ Kieron606, aktualisiert meine Antwort –

+0

nicht sicher, was anders ist, aber ich bekomme keine Daten in der Tabelle – Kieron606