我有一个通过 dataTables 填充的表,其中包含来自 MySQL 表的信息。信息是通过 PHP 以 dataTables 期望信息的方式作为正确的 JSON 准备的。
我遇到的问题是表格不再加载信息。即使还原我的更改以使 JSON 数据不包含指向服务器描述的链接(通过 view.php)也不会改变任何内容。
该站点可以在这里找到:checkersthecat.com/status输出 JSON 信息的 PHP 可以在这里找到:checkersthecat.com/status/inc/json-servers.php
这是 json-servers.php 的代码
<?php
$db = new PDO("mysql:host=localhost;dbname=mcstatus;charset=UTF8", "user", "pass");
$stmt = $db->prepare("SELECT ip, port, category, players, tries, description FROM clients");
$stmt->execute();
$servers = $stmt->fetchAll(PDO::FETCH_ASSOC);
$count = $stmt->rowCount();
$data = array(
"aaData" => array()
);
foreach ($servers as $item) {
$arr = array();
// Address
if (strlen($item['description']) == 0) {
if ($item['port'] != 25565) {
array_push($arr, $item['ip'] . ":" . $item['port']);
} else {
array_push($arr, $item['ip']);
}
} else {
if ($item['port'] != 25565) {
array_push($arr, "<a href='inc/view.php?ip=" . $item['ip'] . "'>" . $item['ip'] . ":" . $item['port'] . "</a>");
} else {
array_push($arr, "<a href='inc/view.php?ip=" . $item['ip'] . "'>" . $item['ip'] . "</a>");
}
}
// Category
array_push($arr, $item['category']);
// Status
if ($item['tries'] == 0) {
array_push($arr, "Up");
} else {
array_push($arr, "Down (" . $item['tries'] . ")");
}
// Players
if ($item['players'] == -1) {
array_push($arr, "?");
} else {
array_push($arr, $item['players']);
}
array_push($data['aaData'], $arr);
}
header("Content-type: application/json");
echo json_encode($data);
?>
实际初始化和设置 dataTable 的 javascript 片段在这里:
// init load of table
serverTable = $("#servers").dataTable({
"bProcessing": true,
"bStateSave": true,
"sPaginationType": "two_button",
"sAjaxSource": "http://checkersthecat.com/status/inc/json-servers.php"
});
它确实有效,我更改了与 jQuery 模态对话框表单相关的 javascript 中的描述长度相关的一个小项目,我刷新了页面,突然 dataTables 不再加载我的 JSON 信息。
我完全不知道为什么它不起作用。即使在没有 JSON 数据中的超链接和以前的描述限制的情况下恢复到我的旧代码也没有什么区别。它仍然给了我无尽的“处理”和“加载”。当我尝试搜索时,它只是说“没有可用的数据”,这很可笑,因为 JSON 信息就在 URL 上并且是有效的。
我试过用firebug调试javascript和PHP并分别打开错误报告,但据我所知,显然这一切都没有问题。
非常感谢任何帮助,因为这让我把头发扯掉了。如果您可能需要任何其他详细信息,请告诉我。