我试图将数据库表数据解析为动态变化的jquery数据表。在php的json_encode
函数
$sql = "SELECT * FROM login";
$result = mysql_query($sql);
$a= array();
while ($row = mysql_fetch_assoc($result)) {
$a[][] = $row;
}
echo (json_encode($a));
Json输出
[[{"id":"1","username":"test11","password":"$2y$10$NiKnEN\/ww8yGVhv3JNjSuO5FfOFSthadS2B3GcbA3KGBktAOSu6lK","role":"Administrator "}],[{"id":"2","username":"test","password":"test","role":"test"}]]
然后我按照他们的说法调用了jquery数据表ajax函数。在这里我的编码
$('#example').dataTable( {
"ajax": 'ab.php'
} );
但最终只在jquery数据表tbody
部分显示“正在加载...”文本。那是为什么?
答案 0 :(得分:4)
显然您正在使用DataTables 1.10版。默认情况下,此版本要求数据采用特定格式,有关详细信息,请参阅DataTables documentation。
{
"data": [
// row 1 data source,
// row 2 data source,
// etc
]
}
将PHP中的$a[][] = $row;
更改为$a['data'][] = $row
,以便以正确的格式生成数据。
答案 1 :(得分:2)
如果使用datatable 1.10 api,则需要创建一个json响应,如:
$json_data = array(
"draw" => intval( $_REQUEST['draw'] ),
"recordsTotal" => intval( $totaldata ),
"recordsFiltered" => intval( $totalfiltered ),
"data" => $data
);
echo json_encode($json_data);
draw:我们发送数据时已发送的相同号码 绘制/请求。
recordsTotal:表格中的记录总数。
recordsFiltered:搜索后过滤后的记录总数 你的桌子。如果您不执行任何搜索,则记录已过滤 将与recordsTotal相同。
数据:您提取的记录数据。您必须按照提取数据 开始,长度,搜索值,colomn名称和排序顺序 参数。你可以从这里下载虚拟数据库表
请参阅此link以了解详情