【发布时间】:2015-07-03 14:46:42
【问题描述】:
我从服务器获取 Json 数据,以便使用 DataTables 显示信息。
在这个json中,有行,列中可能存在多个值,所以它是一个多维数组如下(我只展示了数组的摘录):
{
"info_table": [
{
"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"
}
],
"assistants": [
{
"name": "YULIA SMIRNOVA"
}
]
}
]
}
到目前为止,DataTable 工作正常:
$('#notes_table table').append('<thead><tr><th>Researchers</th><th>Date</th></tr></thead><tbody></tbody>');
$.each(response.info_table,function(i,item){
$('#notes_table').find('tbody').append('<tr><td>'+item.researchers+'</td><td>'+item.date+'</td></tr>');
});
date 列值显示正常,但是,researchers 列仅显示 [object Object]。如果我尝试使用嵌套的 $.each() 如下:
$('#notes_table table').append('<thead><tr><th>Researchers</th><th>Date</th></tr></thead><tbody></tbody>');
$.each(response.info_table,function(i,item){
$.each(item.researchers, function(j,item2){
$('#notes_table').find('tbody').append('<td>'+item2.name+'</td>');
});
$('#notes_table').find('tbody').append('<td>'+item.date+'</td>');
});
我什么也没得到,我只是看到一条 DataTables 消息说Sorry, no results found。
我错过了什么?有什么想法吗?
解决方案
感谢 BLSully:
工作代码如下:
var table = $('#table_id').DataTable({
columns: [{
data: 'researchers[, ].name',
title: 'Researchers'
}, {
data: 'date',
title: 'Date'
}]
});
table.rows.add(data).draw();
就是这样。
【问题讨论】:
-
你在使用 jQuery DataTables 插件吗?如果是这样,这完全是错误的插入数据的方法。请访问api documentation,特别是
rows.add()方法以及column definitions -
同意@BLSully。最好的选择是使用 ajax 源数据并在服务器端正确格式化。 datatables.net/manual/data
标签: javascript jquery json datatables