我正在尝试使用jQuery数据表与服务器端PHP使用AJAX。
我的Ajax调用很简单:
$(document).ready(function() {
$("#dataTable").DataTable( {
serverSide: true,
ajax: "systemlog/loadData",
} );
} );
下面是我的PHP代码:
$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;
返回的JSON是:
{"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."}]}
都完成了,但我从客户端数据表中得到以下错误:
数据表警告:表id=dataTable -请求的未知参数'0'为行0。
屏幕未显示数据
当使用Objects作为数据源时,您需要使用columns.data
选项来定义哪个属性对应于哪个列。
$("#dataTable").DataTable( {
serverSide: true,
ajax: "systemlog/loadData",
columns: [
{ data: "logDateTime" },
{ data: "logType" },
{ data: "source" },
{ data: "user" },
{ data: "message" }
]
} );