【发布时间】: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