gpt4 book ai didi

javascript - 从 php 返回的 json 无法解析为 jQuery dataTables

转载 作者:行者123 更新时间:2023-11-29 21:38:25 30 4
gpt4 key购买 nike

我有一个简单的 mysql 数据库表,其中包含图书馆书籍。我正在使用 php 页面来检索书籍列表。这是它返回的内容:

php get_books.php

{"iTotalRecords":"1","aaData":[{"author":"Tim Powers","title":"The Anubis Gates","genre":"Fiction","publisher":null,"year":null,"location":"Bookshelf","notes":null}]}

在 jQuery dataTables 中,我有:

<script >
$(document).ready(function() {
$('#books').DataTable({
"bServerSide": true,
"sAjaxSource": "./get_books.php"
});
});
</script>

当我使用该脚本运行网页时,我收到一条警报:

DataTables 警告(表 id = 'books'):DataTables 警告:无法解析来自服务器的 JSON 数据。这是由 JSON 格式错误引起的。

我找不到格式错误是什么。数据应该如何格式化。

这是返回 JSON 数据的 php 页面:

<?php
$page = isset($_POST['page']) ? intval($_POST['page']) : 1;
$rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10;
$offset = ($page-1)*$rows;
$result = array();

include 'conn.php';

$rs = mysql_query("select count(*) from books");
$row = mysql_fetch_row($rs);
$result["iTotalRecords"] = $row[0];
$rs = mysql_query("select * from books limit $offset,$rows");

$items = array();
while($row = mysql_fetch_object($rs)){
array_push($items, $row);
}
$result["aaData"] = $items;

echo json_encode($result);

?>

返回应该是什么样子以及如何生成它?

最佳答案

您的 JS 和 PHP 代码都存在很多问题。

如果 books 表中的记录少于几千条,我建议通过删除 "bServerSide": true 来禁用服务器端处理模式以启用客户端处理模式。

JavaScript:

$(document).ready(function() {
$('#books').DataTable({
"ajax": "get_books.php",
"columns": [
{ "data": "author" },
{ "data": "title" },
{ "data": "genre" },
{ "data": "location" }
]
});
});

PHP:

<?php   
include 'conn.php';

$rs = mysql_query("select author, title, genre, location from books");

$result = array();
$items = array();
while($row = mysql_fetch_object($rs)){
array_push($items, $row);
}
$result["data"] = $items;

header("Content-type: application/json");
header("Cache-Control: no-cache, must-revalidate");

echo json_encode($result);
?>

HTML

<table id="books" class="display tablesorter">
<thead>
<tr>
<th>Author</th>
<th>Title</th>
<th>Genre</th>
<th>Location</th>
</tr>
</thead>
</table>

参见this jsFiddle用于代码和演示。

如果您有超过数千条记录,则使用服务器端处理模式将获得更高的性能。但在这种情况下,我建议使用 ssp.class.php jQuery DataTables 发行版中的辅助库(请参阅 examples/server_side/scripts 文件夹)。

关于javascript - 从 php 返回的 json 无法解析为 jQuery dataTables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34731414/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com