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

如何在DataTables的Ajax分页请求中自定义请求头(serverSide: true)

嘿,刚好我之前处理过类似的需求,DataTables在serverSide: true模式下要给分页(包括上一页、下一页点击)这类Ajax请求加自定义头,其实有两种很靠谱的实现方式,看你的具体需求选就行:

方法一:直接配置headers(适合固定头需求)

如果你的自定义请求头是固定不变的,所有DataTables发起的请求(分页、排序、搜索等)都需要带上,那直接在Ajax配置里加headers字段最方便:

$('#your-table-id').DataTable({
  serverSide: true,
  ajax: {
    url: '你的服务器接口地址',
    // 在这里定义自定义请求头
    headers: {
      'X-Custom-Header': '这是我的自定义头内容',
      'Authorization': 'Bearer your-auth-token' // 比如鉴权类的头也这么加
    }
  },
  // 你的其他表格配置(列定义、分页样式等)...
});

这种方式的好处是简单直接,所有DataTables触发的Ajax请求都会自动带上这些头,完全不用额外处理分页事件。

方法二:用beforeSend回调(适合动态头需求)

如果你的自定义头需要动态生成(比如每次请求都要从本地存储取最新的token,或者根据请求类型设置不同的头),那用beforeSend回调会更灵活:

$('#your-table-id').DataTable({
  serverSide: true,
  ajax: {
    url: '你的服务器接口地址',
    beforeSend: function(xhr) {
      // 这里可以动态获取或计算头内容
      const userToken = localStorage.getItem('user_token');
      // 通过xhr对象设置请求头
      xhr.setRequestHeader('X-Auth-Token', userToken);
      // 也可以加多个自定义头
      xhr.setRequestHeader('X-Request-Type', 'pagination');
    }
  },
  // 你的其他表格配置...
});

beforeSend是jQuery Ajax的原生回调函数,DataTables底层依赖jQuery发起请求,所以每次发送请求(包括分页点击)前都会触发这个函数,你可以在这里自由操作XMLHttpRequest对象,设置任意需要的请求头。

小提醒

两种方法都能完美覆盖分页操作的Ajax请求,因为分页触发的请求本质上就是DataTables自动发起的serverSide请求,会完全遵循你配置的Ajax规则。

内容的提问来源于stack exchange,提问作者طلحة

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:43:46