1

I'm trying to use jQuery DataTables with server-side PHP using AJAX.

My Ajax call is simple as:

$(document).ready(function() {
    $("#dataTable").DataTable( {
        serverSide: true,
        ajax: "systemlog/loadData",
    } );
} );

And here is my PHP code:

        $logList = \Models\SysLog::all($where, $fields, $order, $direction);

        $data = array();

        foreach ($logList as $sysLog)
        {
            $data[] = array("logDateTime" => $sysLog->logDateTime,
                            "logType" => $sysLog->logType,
                            "source" => $sysLog->source,
                            "user" => $sysLog->user,
                            "message" => $sysLog->message); 
        }

        $retData = array (
                "draw" => $draw,
                "recordsTotal" => count($sysLogList),
                "recordsFiltered" => count($sysLogList),
                "data" => $data
                );

        $result = json_encode($retData);

        echo $result;

And my returned JSON is like:

{"draw":"1","recordsTotal":30,"recordsFiltered":30,"data":[{"logDateTime":0,"logType":"INFO","source":"sys","user":"sys","message":"Program start."},{"logDateTime":0,"logType":"INFO","source":"sys","user":"sys","message":"Starting handler."},{"logDateTime":0,"logType":"INFO","source":"sys","user":"sys","message":"Starting persistance updater."}]}

All done but I´m getting the following error from DataTables at client side:

DataTables warning: table id=dataTable - Requested unknown parameter '0' for row 0.

No data is shown on screen.

Gyrocode.com
  • 57,606
  • 14
  • 150
  • 185
Mendes
  • 17,489
  • 35
  • 150
  • 263
  • Possible duplicate of [DataTables warning: Requested unknown parameter '0' from the data source for row '0'](http://stackoverflow.com/questions/16539578/datatables-warning-requested-unknown-parameter-0-from-the-data-source-for-row) – Jake Bathman Sep 18 '15 at 17:47

1 Answers1

1

When using Objects as your data source, you need to use columns.data options to define which property corresponds to which column.

For example:

$("#dataTable").DataTable( {
    serverSide: true,
    ajax: "systemlog/loadData",
    columns: [
       { data: "logDateTime" },
       { data: "logType" },
       { data: "source" },
       { data: "user" },
       { data: "message" }
    ]
} );
Gyrocode.com
  • 57,606
  • 14
  • 150
  • 185