Datatables with JSON of objects and array
Datatables with JSON of objects and array
Hello, greetings to all.
I am very new to datatables and how to represent a JSON, so I resort to the experience of those who know.
I have a server that returns data in JSON and I want to show them in a table with these columns:
<td>Time</td>
<td>hostname</td>
<td>cpu</td>
<td>mem</td>
<td>load</td>
<td>disk</td>
So I call the JSON response:
$(document).ready(function() {
    var table = $('#example').DataTable( {
                "ajax": {
                "url": "http://les000/query?db=tele&q=SELECT LAST(cpu_used) AS cpu, LAST(mem_used) AS mem, LAST(load) AS load, LAST(disk_await) AS disk_await FROM custom  GROUP BY hostname ORDER BY time",
                "dataType": "json",
                "cache": false,
                "contentType": "application/json; charset=utf-8"
        deferRender: true,
        columns: [
       {data:  'time' },
            { data: 'hostname' },
            { data: 'cpu' },
            { data: 'mem' },
            { data: 'load' },
            { data: 'disk' }
        ],
        rowId: 'extn',
        select: true,
        dom: 'Bfrtip',
        buttons: [
            {
                text: 'Reload table',
                action: function () {
                    table.ajax.reload();
                }
            }
        ]
    } );
} );
I get the following answer:
Método de la petición:  GET
Código de estado:   HTTP/1.1 200 OK
And this the JSON that I get:
{
    "results": [{
        "statement_id": 0,
        "series": [{
            "name": "custom",
            "tags": {
                "hostname": "LINUX2345"
            },
            "columns": ["time", "cpu", "mem", "load", "disk_await"],
            "values": [
                ["1970-01-01T00:00:00Z", 1, 78, 0, 0]
            ]
        }, {
            "name": "custom",
            "tags": {
                "hostname": "LINUX344334"
            },
            "columns": ["time", "cpu", "mem", "load", "disk_await"],
            "values": [
                ["1970-01-01T00:00:00Z", 9, 49, 1, 0]
            ]
        }]
    }]
}
But in the table I have nothing.
Can someone please guide me? Thank you.
Answers
Hi, It looks like you dont have a ' type' in your ajax call. It needs to to be able tell whether to POST or GET your request.
you should have something like
I always try to make the data which i'm passing to a php easy to edit and read. So if you assign it as a variable earlier you can make your code just a little easier to read.
Hope this helps.
Thanks for answering.
I do not think that's the problem because if it returns a valid JOSN. I think the problem is in making reference to the JSON element, for example in this I do not think it's okay:
{data: 'time' },
To make reference to this:
{
"results": [{
"statement_id": 0,
"series": [{
"name": "custom",
"tags": {
"hostname": "LINUX2345"
},
"columns": ["time", "cpu", "mem", "load", "disk_await"],
"values": [
["1970-01-01T00:00:00Z", 1, 78, 0, 0]
]
}, {
"name": "custom",
"tags": {
"hostname": "LINUX344334"
},
"columns": ["time", "cpu", "mem", "load", "disk_await"],
"values": [
["1970-01-01T00:00:00Z", 9, 49, 1, 0]
]
}]
}]
}