使用AJAX将JSON对象的一部分加载到Datatable

时间:2015-04-13 08:06:43

标签: javascript jquery ajax json datatable

我有一个带有Datatable的页面,我通过AJAX加载JSON对象来获取数据。这很好用。 我想添加另一个Datatable,为了不对两个不同的页面进行AJAX查询,我想将所有数据放入一个JSON对象,并为每个Datatable提取一个嵌套对象。我根本无法让它发挥作用。

第一种情况正常: 我得到这个JSON字符串

{
    "data": [{ 
        "id": "8", 
        "organization_id": "1",
        "name": "Some name",
        "text": "Some text",
        "category": "0",
        "status": "0"
    }]
}

加载

<script>
    var json_output_page_path = '<?php echo $json_output_page_path; ?>';
</script>

在我的Datatable JS中,我像这样访问它

"ajax": json_output_page_path,
"columns": [
    { "data": "name" },
    { "data": "text" },
    { "data": "category" },
    { "data": "status" } 
],

如果我为每个对象嵌套原始PHP数组,那么我得到这个JSON对象:

{
    "openprojects": {
        "data":[{
            "id": "8",
            "organization_id": "1",
            "name": "Some name",
            "text": "Some text",
            "category": "0",
            "status": "0"
        }]
    },
    "closedprojects": {
        "data": [{
            "id": "8",
            "organization_id": "1",
            "name": "Another name",
            "text":"Another text",
            "category":"0",
            "status":"0"
        }]
    }
}

我以为我可以使用&#34;来访问嵌套数组。&#34;符号,但它不会向Datatable提取任何数据。我认为在Datatable加载它之前它可能与不是JSON对象有关。 解决方案是什么?

感谢。我非常感谢你的帮助。


我解决了......有点:-) 我在文档的这两个链接中找到了答案。 https://datatables.net/reference/option/ajax

https://datatables.net/reference/api/ajax.url()

问题的解决方案是:

`$('#example').dataTable({
    "ajax": {
        "url": "data.json", //where this is the link to the JSON source relative to the page where the HTML table is on.
        "dataSrc": "tableData" //Where this is the reference to the nested object
    }
});`

问题仍然存在,因为现在请求是针对每个表单独进行的。 此外,我找到了这个答案,但你能告诉我这是怎么回事吗? &#34;我建议您使用$ .ajax()进行Ajax调用以获取数据,然后使用dataDT选项或rows.add()DT方法将数据添加到表中。 &#34; https://datatables.net/forums/discussion/25309/reuse-ajax-source-for-multiple-tables-on-the-same-page

我不知道如何做到这一点。任何人都可以指定或建议另一种解决方案吗?

感谢。

1 个答案:

答案 0 :(得分:0)

使用var json = <?php echo json_encode($arr); ?>对您的php数组进行编码 然后在<script>标记中记录此console.log( json ),看看你是否得到了正确的对象。

并让用户为您的数据表插件分配正确的选项

data: json_output_page_path设立"ajax": json_output_page_path

访问您需要执行此操作的新对象 json.openprojects.datajson["openprojects"]["data"]