jQuery 数据表 PHP json_encode

jQuery Datatable with PHP json_encode

我试图将数据库 table 数据解析为动态变化的 jquery 数据 table。在 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":"y$NiKnEN\/ww8yGVhv3JNjSuO5FfOFSthadS2B3GcbA3KGBktAOSu6lK","role":"Administrator "}],[{"id":"2","username":"test","password":"test","role":"test"}]]

然后我按照他们说的调用了jquery数据tableajax函数。这是我的编码

 $('#example').dataTable( {
        "ajax": 'ab.php'
    } );

但最终只在 jquery 数据 table tbody 部分显示 "Loading..." 文本。这是为什么?

原因

显然您使用的是 DataTables 1.10 版。默认情况下,此版本要求数据采用特定格式,请参阅 DataTables documentation 了解更多信息。

{
    "data": [
        // row 1 data source,
        // row 2 data source,
        // etc
    ]
}

解决方案

将 PHP 中的 $a[][] = $row; 更改为 $a['data'][] = $row 以生成正确格式的数据。

如果您使用数据table 1.10 api,您需要创建一个 json 响应,例如:

$json_data = array(
    "draw"            => intval( $_REQUEST['draw'] ),
    "recordsTotal"    => intval( $totaldata ),
    "recordsFiltered" => intval( $totalfiltered ),
    "data"            => $data
);
echo json_encode($json_data);
  • 平局:我们发送与 datatable 在 draw/request.

  • recordsTotal:table.

  • 中的记录总数
  • recordsFiltered:搜索后过滤的记录总数 你的 table。如果您不执行任何搜索,则 recordsFiltered 将与 recordsTotal.

  • 相同
  • data:您获取的记录数据。您必须按照 开始、长度、搜索值、列名和排序顺序 参数。你可以从这里

  • 下载虚拟数据库table

请参阅此link了解详情