如何将jQuery DataTable 1.10服务端POST的数组格式数据转为字符串格式
解决方案:自定义DataTables请求参数格式
当然可以实现这个需求!DataTables的ajax配置提供了data选项,让你完全能自定义发送到服务器的参数结构,不用受默认格式限制。
你只需要在ajax配置里添加一个data函数,对DataTables自动生成的请求参数做修改,把原来的数组格式参数转换成你想要的字符串格式参数。下面是修改后的完整代码:
jQuery(document).ready(function() { jQuery('#example').DataTable({ "processing": true, "serverSide": true, "ajax": { "url": "../scripts/pagination_srvr_prcss.cfm", "type": "POST", "data": function(d) { // 处理排序参数:从order数组中提取第一个规则的dir和column if (d.order && d.order.length > 0) { // 添加单独的dir和column参数,值对应原order[0]的属性 d.dir = d.order[0].dir; d.column = d.order[0].column; // 如果不需要原order数组,可以删除它 delete d.order; } // 如果你还需要修改其他参数(比如搜索、分页参数),也可以在这里处理 return d; } } }); });
代码说明:
data函数会接收DataTables默认生成的请求参数对象d,这个对象包含了服务器端处理需要的所有参数(排序、搜索、分页等)。- 我们从
d.order数组中取出第一个排序项的dir(排序方向,比如asc或desc)和column(目标列的索引),将它们作为顶级参数添加到d中。 - 最后返回修改后的
d,DataTables就会把这个对象转换成POST参数发送给服务器,此时请求参数里会是dir和column,而不是原来的order[0][dir]和order[0][column]。
额外提示:
如果你的表格支持多列排序(即order数组可能有多个元素),可以循环遍历d.order数组,生成类似dir_0、column_0、dir_1、column_1这样的参数,适配多排序场景。
另外,别忘了同步修改服务器端的代码,让它接收新的参数名(比如原来接收order[0][dir],现在要接收dir)。
内容的提问来源于stack exchange,提问作者user3742125
相关产品推荐
相关产品推荐

