Json 嵌套数据上的数据表
我正在使用DataTables ajax填充一个表。我一直在关注,如果我的json看起来像他们的示例,它就可以工作,但是我的“数据”是json中的一个嵌套对象,因此它无法填充表,因为无法从json中获取值 这个json的工作原理是:Json 嵌套数据上的数据表,json,ajax,datatables,Json,Ajax,Datatables,我正在使用DataTables ajax填充一个表。我一直在关注,如果我的json看起来像他们的示例,它就可以工作,但是我的“数据”是json中的一个嵌套对象,因此它无法填充表,因为无法从json中获取值 这个json的工作原理是: { "data": [ {"id": "myid1", "name": "name1"}, {"id": "myid2", "name": "name2"} ] } 但是我的json看起来是这样的,它不起作用 { "
{
"data": [
{"id": "myid1", "name": "name1"},
{"id": "myid2", "name": "name2"}
]
}
但是我的json看起来是这样的,它不起作用
{
"result": {
"data": [
{"id": "myid1", "name": "name1"},
{"id": "myid2", "name": "name2"}
]
}
}
这是我的html(与第一个json一起使用):
如您所见,我试图通过将dataSrc
设置为result.data
来访问嵌套的数据,但表中没有显示任何内容
我无法更改json响应的格式,您知道是否无法将DataTables ajax与此json一起使用吗?谢谢
我的解决方案
最后(在回答我的帖子之前)我采用了以下解决方案,首先调用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" }
]
});
以下是这方面的参考:
$.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"},
]
});
}
});
$('#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" }
]
});