Javascript 使用带有AJAX数据源的DataTables的列名

Javascript 使用带有AJAX数据源的DataTables的列名,javascript,jquery,ajax,datatables,Javascript,Jquery,Ajax,Datatables,我正在尝试将我的系统升级为使用DataTables的1.10而不是1.9,并试图找到一种方法,使用JSON对象而不是列表传回行内容。具体来说,我不想以[['data'、'data'、'data']、['data'、'data'、'data']等格式传回数据。我想把它放在[[[colA':'data'、'colB':'data'、'colC':'data']格式中 现在,我的AJAX函数以该格式返回数据,我正尝试使用以下代码进行初始化: $("table").DataTable({ "co

我正在尝试将我的系统升级为使用DataTables的1.10而不是1.9,并试图找到一种方法,使用JSON对象而不是列表传回行内容。具体来说,我不想以
[['data'、'data'、'data']、['data'、'data'、'data']等格式传回数据。
我想把它放在
[[[colA':'data'、'colB':'data'、'colC':'data']
格式中

现在,我的AJAX函数以该格式返回数据,我正尝试使用以下代码进行初始化:

$("table").DataTable({
    "columnDefs": [
        {"name": "wo_status", "title": "wo_status", "targets": 0},
        //repeat for each of my 20 or so fields
    ],
    "serverSide": true,
    "ajax": "url/to/ajax/function"
});
结果正确地从我的AJAX函数返回,但DataTables正在尝试在第0行中查找0的索引,但未能找到,因为我的表单元格是按其列名而不是数字索引索引的。有人知道如何告诉DataTables使用
columnDefs
(或我没有找到的其他选项)中指定的列名而不是数字索引吗?

使用选项指定属性名,如下所示:

$("table").DataTable({
    "columns": [
        { "data": "colA", "name": "colA", "title": "colA" },
        { "data": "colB", "name": "colB", "title": "colB" },
        { "data": "colC", "name": "colC", "title": "colC" }
        //repeat for each of my 20 or so fields
    ],
    "serverSide": true,
    "ajax": "url/to/ajax/function"
});

在fnServerParams函数中使用forEach

$(“表”).DataTable({
“栏目”:[{
“数据”:“可乐”
}, {
“数据”:“colB”
}, {
“数据”:“colC”
}],
“服务器端”:正确,
“ajax”:“url/to/ajax/function”,
fnServerParams:函数(数据){
数据['order'].forEach(函数(项、索引){
数据['order'][index]['column']=data['columns'][items.column]['data'];
});
},
});

谢谢@ahmeti我已经更新了你的方法:)


使用table.ajax.reload()是否需要此设置;Ajax重载似乎无法与列defu一起工作。为什么必须定义
数据
名称
标题
name
还不够吗?@Armitage2k,你不必定义
name
title
,它们在原来的问题中。通常
数据
就足够了。谢谢。你已经展示了秘密宝藏的路径
ajax: {
        url: fetchUrl,
        data: function ( data ) {
            data['columns_map'] = {};
            data['columns'].forEach(function(item, index) {
                data['columns_map'][item.data] = data['columns'][index];
            });
            data['order'].forEach(function(item, index) {
                data['order'][index]['column'] = data['columns'][item.column]['data'];
            });
            return {"data": JSON.stringify(data)};
        }
    },