Предупреждение DataTables: table id = tableName - Неверный JSON ответ? - PullRequest
0 голосов
/ 27 марта 2020

Итак, я видел, что у других была эта проблема, но ни одно из их решений до сих пор не помогло. Моя цель - распечатать данные, извлеченные из базы данных, в таблицу данных. Я, по сути, следую этому примеру кода: https://www.kodingmadesimple.com/2017/12/jquery-datatables-php-mysql-ajax.html. Проблема заключается в том, что браузер возвращает ошибку «Предупреждение DataTables: идентификатор таблицы = tableName - неверный ответ JSON. Для получения дополнительной информации об этой ошибке см. http://datatables.net/tn/1». На данный момент я довольно застрял и не знаю, как двигаться дальше. Я искал inte rnet и пробовал несколько решений. Например, убрав опцию «serverSide», убедившись, что POD включен, добавили «dataSr c»: «», изменили POST на GET (хотя я бы предпочел POST) и т. Д. c. Как вы можете видеть, я начинаю просто пробовать все, что является ужасным подходом, поэтому я обращаюсь к сообществу за помощью.

Мой индекс. html:

<body>
    <h2 style="text-align:center;">Wall of Sheep</h2>
    <table id="tableName" class="display" width="100%" cellspacing="0">
        <thead>
            <tr>
                <th>Username</th>
                <th>Unlocks</th>
                <th>Restriction</th>
                <th>Swap</th>
                <th>Total</th>
                <th>Last Offense</th>
            </tr>
        </thead>
    </table>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js" type="text/javascript"></script>
    <script src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.js" charset="utf8" type="text/javascript"></script>

    <script type="text/javascript">
    $(document).ready(function() {
        $('#tableName').dataTable({
             "processing": true,
             "serverSide": true,
             "ajax": {
                "url": "fetch_data.php",
                "type": "POST",
                "dataSrc": ""
            },
            "columns": [
                {data: 'username'},
                {data: 'Unlocks'},
                {data: 'Restriction'},
                {data: 'Swap'},
                {data: 'Total'},
                {data: 'LastOffense'}
            ]
        });
    });
    </script>
</body>
</html>

Мой PHP (fetch_data. php) файл:

<?php
// db settings
$hostname = 'localhost';
$username = 'root';
$password = 'password';
$database = 'DBname';

// db connection
$con = mysqli_connect($hostname, $username, $password, $database) or die("Error " . mysqli_error($con));

// fetch records
$sql = "SELECT username, Unlocks, Restriction, Swap, Total, LastOffense FROM Table1";
$result = mysqli_query($con, $sql);

while($row = mysqli_fetch_assoc($result)) {
    $array[] = $row;
}

$dataset = array(
    "echo" => 1,
    "totalrecords" => count($array),
    "totaldisplayrecords" => count($array),
    "data" => $array
);

echo json_encode($dataset);

?>

Возвращенный фрагмент предварительного просмотра для включения JSON данные:

{"echo":1,"totalrecords":4401,"totaldisplayrecords":4401,"data":
[{
    "username": "123abc",
    "Unlocks": "0",
    "Restriction": "0",
    "Swap": "1",
    "Total": "1",
    "LastOffense": "2020-02-09 01:41:07"
}, {
    "username": "456def",
    "Unlocks": "0",
    "Restriction": "0",
    "Swap": "1",
    "Total": "1",
    "LastOffense": "2019-12-03 07:39:05"
}]}

Я следовал совету, указанному в https://datatables.net/manual/tech-notes/1. Я до сих пор не могу сказать, в чем проблема. Когда я пропустил https://jsonlint.com/, он вернул «Действительный JSON», поэтому я не совсем уверен, что происходит.

Кроме того, я уверен, что некоторые вещи, которые я делаю, не считаются лучшей практикой, это мой первый раз, когда я создаю веб-сайт. Я приветствую любую конструктивную критику, которая может улучшить мой код, но, пожалуйста, также попробуйте помочь этой проблеме, прежде чем критиковать другие области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...