php - 数据表 'Show All' lengthMenu 抛出无效 json 错误

标签 php jquery json datatables

当我从 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();

一些要点

  1. 我使用的是 dataTables 版本 1.10
  2. 它只是有时会抛出无效的 json 错误(但是,作为一个小错误,应该避免它)。
  3. 抛出错误时,查阅Chrome的inspect panel,成功返回json;但是,它会抛出无效的 json 错误。
  4. 不仅仅是“显示全部”选项,很少有 lengthmenu '100' 也会遇到同样的问题。但大多数时候,它都能正常工作。
  5. 当我从 lengthMenu 选择输入中选择 10、20 和 50 时,数据表永远不会出错。
  6. 我的“PHP 错误日志”文件中没有记录任何错误。
  7. 我的数据表中有大约 1000 行。
  8. 我使用的是最新版本的 WampServer (3.1.7),并运行 PHP 7.3。
  9. 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/

相关文章:

jquery - 元素可以在浏览器上被 jquery 单击,但在 ruby​​-watir 中不能

javascript - 单击时用另一个 SVG 元素替换

java - Java/Play 中的 JSON 代理!框架

PHP Propel 分组按两列

php - 搜索结果(显示更多结果)

php - 如何实现 "Report/Flag comment"

php - 为什么 GROUP_CONCAT + DISTINCT 在某些服务器上会触发内存不足(需要 8388580 字节)?

当屏幕尺寸较小时,Javascript 将链接添加到移动菜单。不再有效。

javascript - 在 JavaScript 中使用来自 JSON 的数据动态填充表的快速方法

PHP 在数组中的元素之间插入元素