使用PHP json_encode的jQuery Datatable

时间:2015-03-15 16:13:11

标签: jquery json jquery-datatables jquery-datatables-editor

我试图将数据库表数据解析为动态变化的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部分显示“正在加载...”文本。那是为什么?

2 个答案:

答案 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以了解详情