DataTable中ajax.data的参数d来源及每次请求后修改方法咨询
问题解答
1. ajax.data回调中参数d的来源
- d是DataTable内部自动构造的请求参数上下文对象,每次表格触发ajax请求前(分页切换、排序、搜索等操作都会触发),DataTable会把当前表格的全部状态参数封装到这个对象中,默认包含分页(
start/length)、排序字段、全局搜索关键词、draw请求标识等内置参数。 - DataTable会在执行ajax请求前主动把这个对象传入你配置的
ajax.data回调,供你追加、修改请求参数再发给后端。
2. 每次ajax调用完成后修改后续请求的参数
首先需要明确:每次请求使用的d对象是临时生成的,请求发出后就会被销毁,你实际需要修改的是下一次ajax请求携带的参数,常用实现方案如下:
方案1:自定义变量存储自定义参数,请求完成后更新变量
// 定义变量存储额外参数 let customParams = { extra_search: '' } $('#example').dataTable( { "ajax": { "url": "data.json", "data": function ( d ) { // 每次请求前把自定义参数合并到d中 Object.assign(d, customParams); } }, // ajax请求完成的回调钩子 "ajaxComplete": function () { // 这里修改自定义参数,下次请求就会自动携带新值 customParams.extra_search = '更新后的搜索参数'; } } );
方案2:重载请求时直接修改参数
如果不想额外定义存储变量,也可以在手动触发表格重载时直接修改参数:
// 获取DataTable实例 const table = $('#example').DataTable(); // 触发重载时直接修改请求参数 table.ajax.reload( function ( params ) { params.extra_search = '新的参数值'; } );
内容的提问来源于stack exchange,提问作者Nguyen Khac Lam
相关产品推荐
相关产品推荐

