2017-02-19 83 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