21

I have a local JSON object formatted like this:

[{
    "id": "58",
    "country_code": "UK",
    "title": "Legal Director",
    "pubdate": "2012-03-08 00:00:00",
    "url": "http://..."
},{
    "id": "59",
    "country_code": "UK",
    "title": "Solutions Architect,",
    "pubdate": "2012-02-23 00:00:00",
    "url": "http://..."
},{
    // ....more of the same......
}]

I would like to set this as the data source for a jQuery datatable and have tried this:

testdata = '{{ jobsJSON | raw }}'; //twig template tag
console.log(testdata);
$('#test').dataTable({
    "aoData": testdata,
    "aoColumns": [
        { "mDataProp": "id" },
        { "mDataProp": "country_code" },
        { "mDataProp": "title" },
        { "mDataProp": "pubdate" },
        { "mDataProp": "url" }
    ]
});

The DataTables plugin loads and attempts to draw the table but gives the error 'No data available in table'

I am not making an AJAX call and just want to access the JSON object from a local JS variable.

3
  • Does console.log(testdata); give you a string or an array/object? (use typeof testdata if you cannot tell the difference. Commented Mar 12, 2012 at 15:23
  • its a string. I have also tried using $.parseJSON() on it. Commented Mar 12, 2012 at 15:31
  • thanks - this sorted it. testdata = $.parseJSON( '{{ jobsJSON | raw }}'); Commented Mar 12, 2012 at 15:41

2 Answers 2

42

The property to supply your own data is aaData NOT aoData:

testdata = [{"id":"58",...}]; // local object

$('#test').dataTable({
    "aaData": testdata,
    "aoColumns": [
        { "mDataProp": "id" },
        { "mDataProp": "country_code" },
        { "mDataProp": "title" },
        { "mDataProp": "pubdate" },
        { "mDataProp": "url" }
    ]
});

Working fiddle

Sign up to request clarification or add additional context in comments.

4 Comments

Thanks. It was a combination of this and the json was not being parsed correctly: testdata = $.parseJSON( '{{ jobsJSON | raw }}');
I know this is an old reply but how do I get to show the column titles? It's currently empty. Thanks!
@Ali Add a title attribute after your mDataProp to set the column titles. stackoverflow.com/a/22486279/119829
if i have another var that i want to set as column, can i do it without adding that variable to that testdata json?
1

I encoutered the same problem, solution is like this: Place $('#list_table').dataTable code in setTimeout function to postpone dataTable application for 5 seconds:

setTimeout("$('#list_table').dataTable ...." , 5000);

I noticed that apply dataTable plugin in firebug after the table is loaded, it doesn't show error as "No data available in table".

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.