如何使用本地JSON对象作为jQuery DataTables的数据源

时间:2012-03-12 15:21:00

标签: jquery json datatables

我有一个像这样格式化的本地JSON对象:

[{
    "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......
}]

我想将此设置为jQuery datatable的数据源并尝试过:

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" }
    ]
});

DataTables插件加载并尝试绘制表,但会出现错误“表格​​中没有数据”

我没有进行AJAX调用,只想从本地JS变量访问JSON对象。

2 个答案:

答案 0 :(得分:41)

提供您自己数据的属性为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

答案 1 :(得分:1)

我遇到了同样的问题,解决方案是这样的: 将$('#list_table').dataTable代码放在setTimeout函数中以推迟dataTable应用程序5秒钟:

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

我注意到在加载表后在firebug中应用dataTable插件,它没有显示错误为"表中没有可用的数据"。