Json 嵌套数据上的数据表

Json 嵌套数据上的数据表,json,ajax,datatables,Json,Ajax,Datatables,我正在使用DataTables ajax填充一个表。我一直在关注,如果我的json看起来像他们的示例,它就可以工作,但是我的“数据”是json中的一个嵌套对象,因此它无法填充表,因为无法从json中获取值 这个json的工作原理是: { "data": [ {"id": "myid1", "name": "name1"}, {"id": "myid2", "name": "name2"} ] } 但是我的json看起来是这样的,它不起作用 { "

我正在使用DataTables ajax填充一个表。我一直在关注,如果我的json看起来像他们的示例,它就可以工作,但是我的“数据”是json中的一个嵌套对象,因此它无法填充表,因为无法从json中获取值

这个json的工作原理是:

{
  "data": [
       {"id": "myid1", "name": "name1"},
       {"id": "myid2", "name": "name2"}
       ]
}
但是我的json看起来是这样的,它不起作用

{
 "result": {
    "data": [
        {"id": "myid1", "name": "name1"},
        {"id": "myid2", "name": "name2"}
        ]
    }
 }
这是我的html(与第一个json一起使用):

如您所见,我试图通过将
dataSrc
设置为
result.data
来访问嵌套的
数据,但表中没有显示任何内容

我无法更改json响应的格式,您知道是否无法将DataTables ajax与此json一起使用吗?谢谢


我的解决方案

最后(在回答我的帖子之前)我采用了以下解决方案,首先调用ajax,然后成功创建DataTable

所以我只把我的js改成了这个:

$.ajax({
    type: "GET",
    url: '/names',
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        var myData = data.result.data;
        $('#myTable').DataTable({
            "data": myData,
            "columns": [
                    { "data": "id" },
                    { "data": "name"},
             ]
          });
     }
});

我有更复杂的处理要求,所以我实现了自己的ajax功能,但我认为您可以做到这一点:

$('#myTable').DataTable( {
  "processing": true,
  "ajax": {
    "url": "/names",
    "dataSrc" : function(jsonObj) {
        // Just being safe here
        if(!jsonObj.results || !json.results.data) {
          return [];
        }

        return jsonObj.results.data;      
    }
  },
  "columns": [
    { "data": "name" },
    { "data": "id" }
  ]
});
以下是这方面的参考:

$.ajax({
    type: "GET",
    url: '/names',
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        var myData = data.result.data;
        $('#myTable').DataTable({
            "data": myData,
            "columns": [
                    { "data": "id" },
                    { "data": "name"},
             ]
          });
     }
});
$('#myTable').DataTable( {
  "processing": true,
  "ajax": {
    "url": "/names",
    "dataSrc" : function(jsonObj) {
        // Just being safe here
        if(!jsonObj.results || !json.results.data) {
          return [];
        }

        return jsonObj.results.data;      
    }
  },
  "columns": [
    { "data": "name" },
    { "data": "id" }
  ]
});