我正在通过使用 AJAX 响应从数据库获取数据来创建数据表。
我收到以下 JSON 数据:
[
{
"id": "11105",
"name": "Gummy Drop (iPhone, Free, ROW except CN, 72.3MB, w"
},
{
"id": "11107",
"name": "Gummy Drop (iPad, Free, ROW except CN, 72.3MB, w/ "
},
{
"id": "4274",
"name": "Z-Redirect Non-Targeted Traffic Dragon City Mobile"
},
{
"id": "6484",
"name": "Z-Redirect Non-Targeted Traffic Dragon City Mobile"
}
]
问题是,我可能不知道 AJAX 响应将来自哪些数据。
因此,我提取 JSON 数组的键来创建 header ,我成功地做到了这一点。
这是我的代码:
$('#load').click(function()
{
var v = $('#drp_v').val();
var cnt = $('#drp_cnt').val();
var ctg = $('#drp_ctg').val();
alert("version :"+v+" category :"+ctg+" country :"+cnt);
$.post("ajax.php",{'version':v,'category':ctg,'country':cnt,'func':'show_datatable'},
function(data)
{
var aColumns = [];
var columns = [];
for(var i = 0; i < data.length; i++)
{
if(i>0)
break;
keycolumns = Object.keys(data[i]);
for(j = 0; j < keycolumns.length; j++)
{
alert(keycolumns[j]);
if($.inArray(keycolumns[j],aColumns.sTitle)<=0)
{
aColumns.push({sTitle: keycolumns[j]}) //Checks if
columns.push(keycolumns[j]) //Checks if
}
}
}
var oTable = $('#jsontable').dataTable({
"columns":aColumns,
"sDom": 'T<"clear">lfrtip',
"oTableTools": {
"aButtons": [
{
"sExtends": "csv",
"sButtonText": "CSV",
}
]
}
});
oTable.fnClearTable();
for(var i = 0; i < data.length; i++)
{
for(var c = 0; c < columns.length; c++)
{
oTable.fnAddData([
data[i].columns[c]]);
}
}
},'json');
});
如您所见,var columns = [];
实际上包含我获取的 JSON 数组的键。所以var columns
的值是这样的:
['id','name','描述']
;
因此,如果我们假设 id、name 和description 是三个键,则不要使用以下代码:
for(var i = 0; i < data.length; i++)
{
oTable.fnAddData([
data[i].id,
data[i].name,
data[i].description]);
}
我用过这个代码
for(var i = 0; i < data.length; i++)
{
for(var c = 0; c < columns.length; c++)
{
oTable.fnAddData([
data[i].columns[c]]);
}
}
以便数据可以作为存储在 var 列中的动态键值加载。
但我想我犯了一些错误。我哪里出错了?
最佳答案
使用此代码:
var row = []
for(var i = 0; i < data.length; i++) {
for(var c = 0; c < columns.length; c++) {
row.push( data[i][columns[c]] ) ;
}
oTable.fnAddData(row);
row = [];
}
关于javascript - 将数据加载到我不知道列的数据表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27168245/