【问题标题】:DataTables wont load with AJAX and MYSQLDataTables 不会加载 AJAX 和 MYSQL
【发布时间】:2019-03-17 12:15:25
【问题描述】:

不知何故,我从这段代码中得到了一个无效的 JSON 响应。目标是在表中显示 SQL 数据,并使用 https://datatables.net/ 进行搜索和排序。问题可能出在哪里?

GET.PHP

$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
$query ="SELECT * FROM users"; 
$result = $mysqli->query($query);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
      $results = ["sEcho" => 1,
          "iTotalRecords" => count($row),
          "iTotalDisplayRecords" => count($row),
          "aaData" => $row ];
        echo json_encode($results, JSON_PRETTY_PRINT);
    }
} else {
    echo "empty table";
}

$mysqli->close();

GET.PHP 响应

{
    "sEcho": 1,
    "iTotalRecords": 2,
    "iTotalDisplayRecords": 2,
    "aaData": {
        "id": "26",
        "name": "test",
        "pass": "2"
    }
}

JS

$(document).ready(function() {
  $('#my-example').dataTable({
    "bProcessing": true,
    "sAjaxSource": "get.php",
    "aoColumns": [{ 
        mData: 'name'
      }, {
        mData: 'pass'
    }]
  });
});

HTML

<script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
<table id="my-example">
  <thead>
    <tr>
      <th>name</th>
      <th>pass</th>
    </tr>
  </thead>
</table>

【问题讨论】:

  • 分享你从 json_encode($results) 得到的结果
  • 当我查看网络选项卡时,ajax 调用得到了什么,什么都没有。所以错误一定已经在php中了。
  • 跟随DataTables documentation,你的PHP代码返回的数组是假的。
  • 假我的意思是错误的哈哈,不是布尔假。
  • 但是是什么原因造成的,它应该把所有行放在 $data[] = $row;用这个?

标签: javascript html mysql ajax datatables


【解决方案1】:

您的 PHP 代码返回的数组应如下所示,它有义务将 data 作为您要返回的数据,并将 error 作为最终错误:

{
  "data": [
    [
      "Text going into the first column",
      "second column",
      "third column"
    ]
  ]
}

因此,在您的情况下,您的数组将如下所示:

[
  "data": [
    [
      "1",
      count($data),
      count($data),
      $data
    ]
  ]
]

在循环中,您还需要使用$row['column'] 获取each row separately

Test case

【讨论】:

  • 对不起,我对这些东西很陌生,我不明白从哪里开始。那么 $results 下的 php 中的数组需要按照上面所见的那样进行结构化吗? while 必须针对每一列?我有点困惑。对不起。
  • 如果您无法理解我的回答,我认为您应该从阅读基本的 MYSQL/PHP 教程开始。并阅读我在您的问题的评论中为您提供链接的数据表页面。
  • 好的。对不起。我会尽力的。
  • 我更新了代码,所以现在我从 php 获得了有效的 JSON 响应,但 js 仍然无法正常工作。
  • 它仍然指出存在“无效的 json”。尽管如上所示,它显示了一个有效的 json 输出。
猜你喜欢
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多