Итак, я видел, что у других была эта проблема, но ни одно из их решений до сих пор не помогло. Моя цель - распечатать данные, извлеченные из базы данных, в таблицу данных. Я, по сути, следую этому примеру кода: 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», поэтому я не совсем уверен, что происходит.
Кроме того, я уверен, что некоторые вещи, которые я делаю, не считаются лучшей практикой, это мой первый раз, когда я создаю веб-сайт. Я приветствую любую конструктивную критику, которая может улучшить мой код, но, пожалуйста, также попробуйте помочь этой проблеме, прежде чем критиковать другие области.