数据表:标题中带有点(。)的列无法正确显示

Pet*_* G. 4 datatable json datatables jquery-datatables-editor datatables-1.10

DataTables似乎将点(.)视为特殊字符,并且不显示在标题中包含点的列。

有什么解决办法如何保留点并使用某种转义符?

错误为:请求的未知参数“文档”。对于第0行,第0列

我的JSON DataTable初始化程序:

{
    "columns": [
        {
            "data": "Doc.",
            "title": "Doc."
        },
        {
            "data": "Order no.",
            "title": "Order no."
        }
    ],
    "data": [
        {
            "Doc.": "564251422",
            "Order no.": "56421"
        },
        {
            "Doc.": "546546545",
            "Order no.": "98745"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

dav*_*rad 6

当数据属性名称中有点时,dataTables将查找嵌套的数据属性。就像Doc.<something>有财产一样。当您拥有自动化脚本时(如您所愿),服务器将分发不一定为dataTables设计的JSON,则可以在将数据传递给dataTables之前对其进行“清理”。

我从昨天得到答案,并添加了两个功能:sanitizeDatasanitizeColumnssanitizeData从键中删除所有点和空格,sanitizeColumnscolumns.data定义中删除空格和点:

$.getJSON('https://api.myjson.com/bins/4z5xd', function(json) {
    //remove whitespace and dots from keys / attribute names    
    function sanitizeData(jsonArray) {
        var newKey;
        jsonArray.forEach(function(item) {
            for (key in item) {
                newKey = key.replace(/\s/g, '').replace(/\./g, '');
                if (key != newKey) {
                    item[newKey]=item[key];
                    delete item[key];
                }     
            }    
        })    
        return jsonArray;
    }            
    //remove whitespace and dots from data : <propName> references
    function sanitizeColumns(jsonArray) {
        var dataProp;
        jsonArray.forEach(function(item) {
            dataProp = item['data'].replace(/\s/g, '').replace(/\./g, '');
            item['data'] = dataProp;
        })
        return jsonArray;
    }    
    json.data = sanitizeData(json.data);
    json.columns = sanitizeColumns(json.columns);    

    $('#example').DataTable({
       data : json.data,
       columns : json.columns
    })
});  
Run Code Online (Sandbox Code Playgroud)

演示-> http://jsfiddle.net/egpxdsq7/