【发布时间】:2015-06-18 11:38:49
【问题描述】:
我有一个带有数据表的页面,我通过 AJAX 加载 JSON 对象来获取数据。这工作正常。 我想添加另一个数据表,并且为了不对两个不同的页面进行 AJAX 查询,我想将所有数据放入一个 JSON 对象中,并为每个数据表只提取一个嵌套对象。我根本无法让它工作。
第一个可以正常工作的场景: 我得到这个 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"
}]
}
}
我认为我可以使用“.”访问嵌套数组。表示法,但它不会将任何数据提取到数据表中。我认为这可能与在 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
}
});`
问题仍然存在,因为现在为每个表单独发出请求。 此外,我找到了这个答案,但你能帮我说说这是怎么做的吗? “我建议您使用 $.ajax() 自己调用 Ajax 来获取数据,然后使用 dataDT 选项或 rows.add()DT 方法将数据添加到表中。” https://datatables.net/forums/discussion/25309/reuse-ajax-source-for-multiple-tables-on-the-same-page
我不知道该怎么做。任何人都可以指定或建议其他解决方案吗?
谢谢。
【问题讨论】:
-
你检查过名字吗,比如变量是
projects,你可以试试projects["openprojects"]?你在控制台上看到了什么? -
是的,我尝试测试以输出对象并使用
data: json_output_page_path,如下所述,您提到的符号。我无法让它工作。 -
您能否在 jsfiddle 上托管代码的可行部分。调试起来会更容易。您不需要发布 AJAX 代码,只需假设 AJAX 已解决(或使用回显服务或其他东西)
-
我在 link 上发布了一个 JSFiddle。我不太确定如何设置 JSON 调用,因为我以前没有 Fiddled。无论如何,我希望这是有道理的。谢谢。
标签: javascript jquery ajax json datatable