javascript - 服务器端数据表返回额外页面

标签 javascript jquery ajax datatables

当我调用服务器端 DataTables 搜索时,我返回一项,这是 AJAX 调用的响应:

{draw: 1, recordsTotal: 1, recordsFiltered: 18,…}
 data: [{...}]
 draw: 1
 recordsFiltered: 18
 recordsTotal: 1

DataTables 认识到这一点:

Showing 1 to 10 of 18 entries (filtered from 1 total entries)

这是我当前的配置(我当前正在使用管道,如下所述:https://datatables.net/examples/server_side/pipeline.html)

var table = $('#table').DataTable({
    "processing": true,
    "serverSide": true,
    "ajax": $.fn.dataTable.pipeline({
        url: '/url',
        pages: 5 // number of pages to cache,
    }),
    "pagingType": "full_numbers",
    "columns": columnData,
    "order": [[1, "desc"]]
});

当我在 Chrome 浏览器控制台中调用 table.page.info() 时,我得到

{page: 0, pages: 2, start: 0, end: 10, length: 10, …}
end: 10
length: 10
page: 0
pages: 2
recordsDisplay: 18
recordsTotal: 1
serverSide: true
start: 0

根据之前的信息以及Datatables正确搜索的事实,我认为我的服务器端实现是正确的。但是,我不知道是什么导致数据表显示两页而不是每页十条记录的一页。

最佳答案

希望这有助于您理解。

recordsTotal 用于显示总记录数并设置记录数分页。 Datatable 有内部函数根据 recordsTotal 设置分页。

whilerecordsDisplay 用于在特定页面上显示记录。

当您单击分页时,服务器端会根据长度和偏移量获取新记录。
所以,代码中的问题是 recordsDisplay 为 18,而 recordsTotal 为 1。这是不可能的。

--> recordsDisplay > recordsTotal 是不可能的。

关于javascript - 服务器端数据表返回额外页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51527015/

相关文章:

javascript - 使用 Jquery 显示 body 背景图像

javascript - json 加载为 javascript 代码并使用变量

javascript - 未应用 jQuery Mobile 样式

javascript - 如何保持滚动条始终在底部?

javascript - 如何通过比较表格等时间表来动态更改单元格的颜色

javascript - Coldfusion:显示来自数据库 cfajaxproxy 的更新总数

javascript - 连接 javascript 和 html

javascript - 如何从字符串中获取最后一个单词的名称

javascript - 如何将一个对象映射到另一个对象?

javascript - Jquery ajax Post 不起作用?