首页 > 解决方案 > 如何在数据表ajax中使用json返回的对象内部的数组列名?

问题描述

如果数据是对象内的数组,我试图弄清楚如何写数据的列名

如果 json 返回看起来像

"data" : {
            "name" : "aaa"
    }

我将使用此代码

        ajax : {
            url : url,
            type : 'GET'
        },
        "scrollX" : true,
        destroy : true,
        columns : [ {
            data : 'name'
        }, ]

但是如果 json 返回看起来像

"data" : {
            "detail" : [
              {
                  "name" : "abc"
              }
            ]
}

我尝试在下面编写此代码,但它不起作用,有人可以帮我解决这个问题

 ajax : {
                url : url,
                type : 'GET'
            },
            "scrollX" : true,
            destroy : true,
    columns : [ {
                    data.detail : 'name'
                },
        ]

标签: ajaxdatatabledatatables

解决方案


这是可以使用dataSrcDataTables 选项的地方:ajax

ajax : {
  url : url,
  type : 'GET',
  dataSrc: 'data.detail'
},

此选项告诉 DataTables 通过 JSON 的迭代应该从data.detail对象数组开始。

通常,(如在您的第一个 JSON 示例中),您不需要此指令 - 因为起点假定为data. 这是标准 jQueryajax选项集的 DataTables 扩展。你可以在这里阅读更多关于它的信息。

相关部分是:

您可以使用 Javascript 点对象表示法来获取多级对象/数组嵌套的数据源。

编辑:

澄清一下:进行上述更改后,您可以再次使用原始方法来识别列数据:

columns : [ 
  { data : 'name' }, 
  { data : 'another_name' },
  { ... }
]

推荐阅读