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

Datatable 1.10设置displayStart不生效,服务端请求start参数恒为0如何解决?

问题原因

这是DataTables 1.10.3版本的已知bug:使用大写D开头的DataTable()构造函数(返回新版API实例)时,displayStart配置项在服务端模式(serverSide: true)下不会被正确读取,导致每次请求的start参数强制为0;而小写d开头的dataTable()返回的是旧版jQuery实例,没有这个bug,但不支持新版的search()、row()等API调用,就会出现你遇到的方法调用报错问题。

修复方案

你可以根据项目的实际情况选择以下任意一种方案:

  • 方案1:升级DataTables版本(最推荐)
    该bug在1.10.4及以上版本已经被官方修复,升级后原有displayStart配置无需修改,新版API也可以正常使用,没有兼容问题。
  • 方案2:不升级版本,手动覆盖请求参数
    不需要修改初始化写法,在ajax.data回调中手动给首次请求的start赋值即可,修改对应代码:
    data: function (d) {
      // 仅首次请求覆盖start,后续分页操作不受影响
      if (d.draw === 1) {
        d.start = 100; // 和你要设置的displayStart值保持一致即可
      }
      // 保留你原有的其他请求参数设置逻辑
    }
    
    该方案完全兼容现有新版API调用,无需修改其他业务代码。
  • 方案3:兼容旧版初始化写法的API调用
    如果你坚持使用小写d的dataTable()初始化,只需要在调用API前加一层.api()转换,就不会出现方法报错:
    // 初始化用小写d写法
    this.table = $('#table').dataTable({
      // 你的原有配置
    });
    // 调用方法前先转为新版API实例
    this.table.api().search('关键词').draw();
    this.table.api().row(0).data();
    

内容的提问来源于stack exchange,提问作者Shadow_Sphynx

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 14:36:04