关于嵌套数据的DataTables ajax
问题描述:
我正在使用DataTables ajax来填充表格。我正在关注this example,它的工作原理是如果我的json看起来像他们的例子,但是我的'data'是我的json中的嵌套对象,然后无法填充表,因为无法从json获取值。关于嵌套数据的DataTables ajax
此JSON的工作原理:
{
"data": [
{"id": "myid1", "name": "name1"},
{"id": "myid2", "name": "name2"}
]
}
但我的JSON看起来像这一点,这是行不通的
{
"result": {
"data": [
{"id": "myid1", "name": "name1"},
{"id": "myid2", "name": "name2"}
]
}
}
这是我的HTML(与第一JSON作品):
<table id="myTable" class="tabletable-bordered dataTable">
<thead>
<tr>
<th>name</th>
<th>id</th>
</tr>
</thead>
<tbody>
<td></td>
<td></td>
</tbody>
</table>
这就是我的js:
$('#myTable').DataTable({
"ajax": "/names",
"processing": true,
"dataSrc" : "result.data",
"columns": [
{ "data": "name" },
{ "data": "id" }
]
});
正如您所看到的,我尝试通过将dataSrc
设置为result.data
来访问我的嵌套data
,但表中未显示任何内容。
我不能改变json响应的格式,你知道如果不能用这个json使用DataTables ajax吗?谢谢!
我的解决方案
最后,我用以下解决方案去(得到一个答案,我的职务之前),我首先做一个Ajax调用,然后在成功创建我的DataTable。
所以我只能改变我的js这一个:
$.ajax({
type: "GET",
url: '/names',
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
var myData = data.result.data;
$('#myTable').DataTable({
"data": myData,
"columns": [
{ "data": "id" },
{ "data": "name"},
]
});
}
});
答
我有更复杂的处理要求,让我实现我自己的AJAX功能,但我认为你可以不用它:
$('#myTable').DataTable({
"processing": true,
"ajax": {
"url": "/names",
"dataSrc" : function(jsonObj) {
// Just being safe here
if(!jsonObj.results || !json.results.data) {
return [];
}
return jsonObj.results.data;
}
},
"columns": [
{ "data": "name" },
{ "data": "id" }
]
});