DataTables将源数组包含在JSON'data'属性中

时间:2019-07-08 20:33:54

标签: javascript jquery json ajax datatables

我正在尝试使用通过jQuery ajax GET请求获得的数据创建数据表。 GET请求以格式返回所有对象

[{
    "id": "88776",
    "employee_name": "JohnhmO",
    "employee_salary": "13973",
    "employee_age": "19",
    "profile_image": ""
},
{
    "id": "88778",
    "employee_name": "jbmvy",
    "employee_salary": "123",
    "employee_age": "23",
    "profile_image": ""
}]

我需要将源数组包含在JSON'data'属性中,以便数据表可以读取它。

我尝试解析为JSON。我试过不动。

var dataSet = '';
$.ajax({
    url: 'http://dummy.restapiexample.com/api/v1/employees',
    type: 'GET',
    datatype: 'json'
}).done(function (data) {
    console.log(data);
    dataSet = data;
})
function unshiftFunc(dataSet) {
    dataSet.unshift('data:');
}
console.log(dataSet)

我要的是这个东西

{
    "data": [{
        "id": "88776",
        "employee_name": "JohnhmO",
        "employee_salary": "13973",
        "employee_age": "19",
        "profile_image": ""
    },
    {
        "id": "88778",
        "employee_name": "jbmvy",
        "employee_salary": "123",
        "employee_age": "23",
        "profile_image": ""
    }]
}

3 个答案:

答案 0 :(得分:2)

您可能打算将返回的数组放入对象中,并以属性名称data为键。在这种情况下,只需创建一个对象,然后将数据分配到data属性中即可。

.done(function(data){
   dataSet = { data: data };
})

顺便说一句,console.log(dataSet)将返回undefined,因为$.ajax是异步的。您必须在done的回调中执行此操作,才能知道AJAX解析后dataSet的样子。

答案 1 :(得分:1)

如果您使用ajax选项而不是 external $.ajax()调用,则可以保持JSON不变,并且仍然可以成功填充DataTables,这可能会导致您遇到各种问题:

$('table').DataTable({
   ...
   ajax: {
      url: 'http://dummy.restapiexample.com/api/v1/employees',
      type: 'GET',
      dataSrc: ''
   }
});

选项dataSrc: '' indicates中,您的源数据是未包含在任何特定属性中的对象数组。

答案 2 :(得分:1)

您始终可以使用Array.concat()以所需的方式将事物添加在一起。

data = ["data"].concat(data);