2017-02-19 79 views
1

我一直在使用的DataTable的jQuery pluging多年建立的时候动态列和数据 看到的jsfiddle 我看到一个很奇怪的错误/发生 了:https://jsfiddle.net/scriptgurus/6da21tyn/jQuery的数据表.MAP奇怪返回旧版本datables列

var cols = Object.keys(data[0]).map(function(key) { 
    return {title: key, data: key}; 
}); 

返回刚才的所有按键(从数据生成的列:)(见的jsfiddle EX),它会返回新:

使用它时,似乎数据表最新版本1.10.13在 插入数据:密钥和也是旧的遗留版本.. MDATA,并且sTitle ..

很奇怪..任何人有什么想法?

回答

0

根据数据表DOC https://datatables.net/manual/server-side#Returned-data:数据表的

旧版本(1.9〜)中使用一组不同的参数 发送和从服务器接收。由于DataTables 1.10+编写的 这样的脚本将无法与DataTables 1.9-兼容。但是,DataTables 1.10对于为1.9-编写的脚本确实具有兼容模式。这种兼容性模式由旧sAjaxSource参数(而不是新的Ajax参数)的使用 或通过设置$ .fn.dataTable.ext.legacy.ajax =真正的触发;

因此,mData和sTitle可以使用具有新库版本的旧数据表设置。

+0

感谢但添加:$ .fn.dataTable.ext.legacy.ajax = false;仍然添加不需要的旧密钥sTitle,mData等自动..奇怪它挂钩在任何引用密钥数据..标题和添加旧密钥..我甚至试图删除键后。 – scriptgurus

+0

这是一个真正的问题,如果你正在定义或映射不同的数组/对象在你的脚本中使用.. datatables将始终将其遗留键添加到任何对象的键:“数据”..“标题”,“渲染” – scriptgurus

+0

目前您无法关闭它们。如果您使用的是jQuery DataTables 1.10,但服务器端处理参数来自以前版本的DataTable 1.9,则在DataTables初始化代码强制jQuery DataTables使用旧方案之前,$ .fn.dataTable.ext.legacy.ajax = true。 – mhshimul