我正在使用DataTables ajax来填充表格。我正在关注this example,如果我的json看起来像他们的例子,它可行,但是我的数据'是我的json中的嵌套对象,然后它无法填充表,因为无法从json获取值。
这个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" }
]
} );
正如您所见,我尝试通过将data
设置为dataSrc
来访问我的嵌套result.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"},
]
});
}
});
答案 0 :(得分:4)
我有更复杂的处理要求,所以我实现了自己的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" }
]
});