You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Datatables插件问题:重载Ajax不丢页码但最后页删完数据报错

Datatables 保留页码重载Ajax时最后一页删空报错的解决办法

当你用table.ajax.reload(null,false)保留当前页码重载数据,但最后一页的行被全部删除后,会因目标页码无数据报错。可以用以下两种方式处理:

方式一:删除后预判调整页码

在执行删除操作后,先判断当前页是否是最后一页且删除后会空页,提前跳转到有效页码再重载:

// 删除操作完成后执行
const pageInfo = table.page.info();
// 当前是最后一页,且当前页的行数等于要删除的数量(可根据实际删除逻辑调整判断条件)
if (pageInfo.page === pageInfo.pages - 1 && table.rows({page: 'current'}).count() === 1) {
  // 若不是第一页,跳转到上一页
  if (pageInfo.page > 0) {
    table.page(pageInfo.page - 1).draw(false);
  }
}
// 重载数据,保留当前(已调整的)页码
table.ajax.reload(null, false);

方式二:重载后回调修正页码

借助ajax.reload()的回调函数,在数据重载完成后检查分页状态,自动修正到有效页码:

table.ajax.reload(function() {
  const newPageInfo = table.page.info();
  // 当前页码超出了新的总页数,说明原页码已无效
  if (table.page() >= newPageInfo.pages) {
    // 跳转到最后一页(总页数为0时会自动显示空状态)
    table.page(newPageInfo.pages - 1).draw(false);
  }
}, false);

这两种方式都能避免无数据页码导致的报错,同时尽可能保留用户的分页上下文。

内容的提问来源于stack exchange,提问作者Camilo Andrés Fique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:07:13