jQuery Datatable with PHP json_encode

Top25 picture Top25 · Mar 15, 2015 · Viewed 19.4k times · Source

I tried to parse database table data to jquery data table which are dynamically change. I got following output after php's json_encode function

$sql = "SELECT * FROM login";

$result = mysql_query($sql);
$a= array();
while ($row = mysql_fetch_assoc($result)) {
$a[][] = $row;
    }

    echo (json_encode($a));

Json output

[[{"id":"1","username":"test11","password":"$2y$10$NiKnEN\/ww8yGVhv3JNjSuO5FfOFSthadS2B3GcbA3KGBktAOSu6lK","role":"Administrator "}],[{"id":"2","username":"test","password":"test","role":"test"}]]

Then I called jquery data table ajax function as they said. here my coding for that

 $('#example').dataTable( {
        "ajax": 'ab.php'
    } );

But ultimately display only "Loading..." text in the jquery data table tbody section. Why is that?

Answer

Gyrocode.com picture Gyrocode.com · Mar 16, 2015

CAUSE

Apparently you're using DataTables version 1.10. By default, this version expects data to be in certain format, see DataTables documentation for more information.

{
    "data": [
        // row 1 data source,
        // row 2 data source,
        // etc
    ]
}

SOLUTION

Change $a[][] = $row; to $a['data'][] = $row in your PHP to produce data in the correct format.