我对json_encode没有经验,我正在尝试为DataTables with server-side processing返回一个名为 aaData 的数组阵列。
输出应该是:
{
"sEcho": 3,
"iTotalRecords": 57,
"iTotalDisplayRecords": 57,
"aaData": [
[
"Gecko",
"Firefox 1.0",
"Win 98+ / OSX.2+",
"1.7",
"A"
],
[
"Gecko",
"Firefox 1.5",
"Win 98+ / OSX.2+",
"1.8",
"A"
],
...
]
}
但是我的PostgreSQL 8.4驱动的PHP脚本的实际输出
if (isset($_REQUEST['json'])) {
$aaData = array();
while ($row = $sth->fetch(PDO::FETCH_NUM)) {
array_push($aaData, $row);
}
print json_encode($aaData);
}
实际上是缺少括号外的对象(对象如?)和 aaData 名称:
[
[ .... ],
[ .... ],
[ .... ]
]
你最好怎么做?
答案 0 :(得分:11)
另一个选择是使用问题中的代码但改变一行:
print json_encode(array('aaData' => $aaData));
答案 1 :(得分:5)
如果你希望它有aaData
作为名称,那么你需要给你的数组一个关联索引,如下所示:
if (isset($_REQUEST['json'])) {
$arr['aaData'] = array();
while ($row = $sth->fetch(PDO::FETCH_NUM)) {
array_push($arr['aaData'], $row);
}
print json_encode($arr);
}
答案 2 :(得分:1)
解释问题的根源:变量名$aaData
与数据本身无关。因此,json_encode
不会将其序列化。