当我从 lengthMenu 选择输入中选择“全部”时,我的数据表偶尔会抛出“INVALID JSON”错误。有谁知道导致问题的原因是什么。以下是我的数据表脚本:
var dataTable = $('#info-table').DataTable({
dom: 'lfrtipB',
processing: true,
serverSide: true,
orderable: false,
ajax: {
url: 'core.php',
type: 'POST',
data: {action: 'fetch'},
dataType: 'json',
},
searchable: true,
pageLength: 10,
lengthMenu: [[10, 20, 50, 100, -1], [10, 20, 50, 100, "All"]],
});
以下也是我的服务器端流程:
$query = 'SELECT * from archive ';
if (isset($_POST['search']['value'])) {
$query .= 'WHERE sid LIKE "%' . $_POST["search"]["value"] . '%" ';
}
if (isset($_POST['length']) and $_POST['length'] != -1) {
$query .= 'LIMIT ' . $_POST["start"] . ', ' . $_POST["length"] . ' ';
}
$statement = $conn->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$filteredrows = $statement->rowCount();
$data = array();
foreach ($result as $row) {
$subarray = array();
$subarray[] = $row['sid'];
$subarray[] = $row['fname'] .' '. $row['lname'];
$data[] = $subarray;
}
$output = array(
'draw' => intval($_POST['draw']),
'recordsTotal' => $filteredrows,
'recordsFiltered' => $dbs->getTotalRecords('students'),
'data' => $data
);
echo json_encode($output);
exit();
一些要点
- 我使用的是 dataTables 版本 1.10
- 它只是有时会抛出无效的 json 错误(但是,作为一个小错误,应该避免它)。
- 抛出错误时,查阅Chrome的inspect panel,成功返回json;但是,它会抛出无效的 json 错误。
- 不仅仅是“显示全部”选项,很少有 lengthmenu '100' 也会遇到同样的问题。但大多数时候,它都能正常工作。
- 当我从 lengthMenu 选择输入中选择 10、20 和 50 时,数据表永远不会出错。
- 我的“PHP 错误日志”文件中没有记录任何错误。
- 我的数据表中有大约 1000 行。
- 我使用的是最新版本的 WampServer (3.1.7),并运行 PHP 7.3。
- StackOverflow 或 dataTables 网站上没有提供有关该问题的任何特别信息。
任何帮助将不胜感激!
最佳答案
有时会对这个令人作呕的旧 dataTables 错误感到失望,我再次向自己保证 dataTables“无效 json”与插件本身无关,并且肯定还有其他原因导致了问题。就我而言,有两个因素导致了问题。首先,如果您使用 Phpstorm,它会以某种方式限制某些文件,并出于某种原因给出消息“将授权 URL 复制到剪贴板”。因此,您要做的就是删除 Phpstorm 使用的端口,例如 localhost:63342/site/index.php,在本例中,应删除 ':63342',然后对站点进行评估和测试。因此,造成dataTables偶发的无效json错误的主要原因是Phpstorm端口干预。祝一切顺利。
关于php - 数据表 'Show All' lengthMenu 抛出无效 json 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60721415/