我试图用ajax实现将pageLength添加到我的数据表中,但是当我试图查看结果时,它会返回大量数据,而不是对每个页面的数据进行切片。请看下面的代码。
JS
$('table.dataTableAjax').DataTable({
"processing": true,
"serverSide": true,
"paging": true,
"pageLength": 50,
"ajax": "..."
});
我也尝试了下面的代码,但仍然不能正常工作。
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
来自服务器端的示例数据
{
"data":[
{ "name": "Bob" },
{ "name": "Billy" }
]
}
在我的服务器端,我正在抛出500+数据行。
因此,当前的结果是,它返回所有500+表行,而不是每页50个表行。
发布于 2020-11-26 01:40:00
在datatable配置中,您可能将serverSide
属性配置为"true“。如果启用它,服务器应该负责限制需要发送的行数。您可以尝试禁用serverSide
选项并查看。
$('table.dataTableAjax').DataTable({
"processing": true,
"serverSide": false,
"paging": true,
"pageLength": 50,
"ajax": "..."
});
发布于 2020-11-26 01:59:55
"serverSide": true,
阅读了服务器端处理https://datatables.net/manual/server-side的手册,特别是关于length
和start
的内容
所有的处理、行限制、过滤、分页等都是在服务器端脚本中实现的。
下面是一个用于服务器端数据处理的示例php脚本,但我不确定您使用的是哪个版本。(这是遗留数据版本) https://legacy.datatables.net/examples/data_sources/server_side.html
在后端需要实现的一些例子如下所示。
<?php
// Build your query up here
$query = "select * from some_table where blah ":
// For paging
// If the request supplied a place to start
if ( isset( $request['start'] ) && $request['length'] != '-1' ) {
// Add a limit section to your query
$query = $query . "LIMIT $request['start'],$request['length'] ";
}
https://stackoverflow.com/questions/65014870
复制相似问题