我有一个带有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
我不知道如何做到这一点。任何人都可以指定或建议另一种解决方案吗?
感谢。
答案 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.data
或json["openprojects"]["data"]