我假设根据您的措辞,您使用的是datatables.鉴于此,我将提供一个利用插件的设计而非手动DOM操作来处理与表的数??据绑定的替代示例.因此,这并不是对问题的完全回答,而是对您尝试实现的目标的正确方法的建议(给定您提供的上下文.根据您检索数据的方式,可能稍作改动)
向表中添加正交json数据的正确方法是创建列定义,以便表知道要显示数据的列以及有关如何显示数据的规则.
我根据您的数据设置了一个示例(进行了一些扩展以说明如何处理深度嵌套的对象和数组).真正相关的是第一列的数据属性:researcher [,] .name.该值的语法指示数据表将属性研究人员视为一个数组,并以逗号分隔的方式显示它.因为数组元素是JavaScript对象,所以方括号后的.name指示DataTables应该在其上显示对象的属性.
var data = [
{
"date": "2015-01-06",
"subject": "Some subject or title",
"type": "article",
"url": null,
"pdf": null,
"notes": null,
"created_at": "2015-06-26 13:38:53",
"updated_at": "2015-06-26 13:38:53",
"institute": "Some Institute name",
"researchers": [{
"name": "CARL SMITH"
},{
"name": "JOHN DOE"
}],
"assistants": [
{
"name": "YULIA SMIRNOVA"
}
]
},{
"date": "2015-01-06",
"subject": "Some subject or title",
"type": "article",
"url": null,
"pdf": null,
"notes": null,
"created_at": "2015-06-26 13:38:53",
"updated_at": "2015-06-26 13:38:53",
"institute": "Some Institute name",
"researchers": [{
"name": "FRED FLINSTONE"
},{
"name": "WILMA FLINTSTONE"
}],
"assistants": [
{
"name": "BARNEY RUBBLE"
}
]
}
];
var table = $('#demo').DataTable({
columns: [{
//this is the important bit here. See explanation above
data: 'researchers[, ].name',
title: 'Researchers'
}, {
data: 'date',
title: 'Date'
}]
});
//this line adds new rows to the table and redraws
table.rows.add(data).draw();
body {
font: 90%/1.45em "Helvetica Neue", HelveticaNeue, Verdana, Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
color: #333;
background-color: #fff;
}
div.container {
min-width: 980px;
margin: 0 auto;
}
DataTables - JS Bin