如何在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,提问作者طلحة
相关产品推荐
相关产品推荐

