DataTable设置pageLength不生效,表格行数超10行如何解决?
解决DataTable服务端模式下pageLength不生效的问题
我在创建DataTable表格(截图:
)时遇到问题:表格显示的行数远超过预期的10行。即便尝试设置pageLength和lengthMenu都没有效果,以下是我的JS代码:
var certain_ipc_log_table = $("#certain_ipc_log_table_example").DataTable({ processing: true, lengthChange: true, serverSide: true, // pageLength: 10, // lengthMenu: [ [5, 10, 25, 50, -1], [5, 10, 25, 50, "All"] ], // 尝试过但无效 ajax: { url: "http://192.168.03.30:3000/api/log/files/list", // 模拟接口 type: "POST", // dataType : 'json', contentType : 'application/json', data: function(d) { d.search = d.search.value console.log(d) return JSON.stringify(d) }, headers: { Authorization: "Bearer " + getToken, }, dataSrc: function (response) { console.log("DATA", response); return response.data; } }, columns: [ { data: "file_path", title: "file_path" }, { data: "filename", title: "filename" }, { data: "extension", title: "extension" }, { data: "modified", title: "modified" }, { data: "size", title: "size" }, ], error: function(response){ console.log("ERROR",response); } }); certain_ipc_log_table.draw();
我试过设置pageLength: 5或者同时配置pageLength : 5, lengthMenu: [[5, 10, 20, -1], [5, 10, 20, '全部']],但都没有生效,该怎么解决?
问题原因与解决方法
因为开启了serverSide: true,此时DataTable的分页、排序、搜索逻辑完全由后端接口处理,前端的pageLength只是传递“每页需要多少条数据”的指令,如果后端没有正确处理这些参数,前端设置就不会生效。
后端必须处理分页参数
DataTable发起请求时会自动携带start(当前页起始记录索引)和length(每页请求条数)参数,后端接口需要读取这两个参数,对数据进行分页查询,只返回当前页的数据。后端返回格式必须符合要求
后端返回的JSON数据必须包含以下字段:data: 当前页的具体数据(你已通过dataSrc: 'data'指定该字段)recordsTotal: 数据库中未过滤的总记录数recordsFiltered: 经过搜索过滤后的总记录数(无搜索功能时等于recordsTotal)
示例返回格式:
{ "recordsTotal": 100, "recordsFiltered": 100, "data": [/* 当前页数据数组 */] }前端恢复分页配置
取消注释之前的分页配置代码,确保前端正确传递分页参数:pageLength: 10, lengthMenu: [ [5, 10, 25, 50, -1], [5, 10, 25, 50, "全部"] ]检查请求参数
打开浏览器控制台,查看DataTable发起的请求体,确认start和length参数是否存在。如果缺失,检查data函数是否修改参数时导致丢失。
内容的提问来源于stack exchange,提问作者080_coder_from_jap
相关产品推荐
相关产品推荐

