如何获取ajax响应数组的密钥以建立数据表的标头
How to get the key of ajax response array in order to build up header of datatable?
我有一个$.post
查询,我正在从ajax响应中检索json数据。问题是我想在数据表中加载数据,并且需要动态创建表的标题。
我的 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"}]
如您所见,这两个键是 id
和 name
.我想获取两个键并用作标题列,但我无法这样做。
代码如下:
$(document).ready(function() {
window.prettyPrint() && prettyPrint();
$('#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 = [{ sTitle: "Week"}, { sTitle: "Winkelformule" }];
var oTable = $('#jsontable').dataTable({
"columns":aColumns,
"sDom": 'T<"clear">lfrtip',
"oTableTools": {
"aButtons": [
{
"sExtends": "csv",
"sButtonText": "CSV",
}
]
}
});
oTable.fnClearTable();
alert(data);
for(var i = 0; i < data.length; i++)
{
oTable.fnAddData([
data[i].id,
data[i].name
]);
} // End For
},'json');
});
});
如您所见:
var aColumns = [{ sTitle: "Week"}, { sTitle: "Winkelformule" }];
正在创建<thead>
。
现在我的两个问题是:
a) 我想在这里使用键,以便 thead 可以是动态的。
b) 其次,你可以看到我正在初始化 ajax 调用的数据表。这意味着每次调用 ajax 时,都会初始化数据表。我想消除它。我希望数据表初始化一次,但每次触发 ajax 调用时都会创建<thead>
。但我只知道在数据表初始化期间创建<thead>
。
Object.keys 可能是您要查找的。
response = $.post(YOUR_AJAX_PAAGE)
aColumns = [{ sTitle: "Week"}, { sTitle: "Winkelformule" }];
registerredKeys = [];
for(i = 0; i<response.length; i++){
keycolumns = Object.keys(response[i]); //Get keys of each object
for(j = 0; j < keycolumns.length; j++){
if($.inArray({sTitle: keycolumns[j]},registerredKeys)<=0){
aColumns.push({sTitle: keycolumns[j]}) //Checks if
registerredKeys.push( keycolumns[j]);
}
}
}
然后渲染aColumns
.解决问题 a。对于问题 b,您可能需要精心制作 json 响应,以便您可以事先获得所有密钥,否则您最终会一遍又一遍地初始化 thead,因为您不知道所有数据。您可以保留一个运行列表,以查看是否已注册新列。(公开 PreviousKeys 并在上述代码段之后运行它。
if(Object.toJson(registerredKeys) === PreviousKeys){
//Ignore
}else{
PreviousKeys = Object.toJson(registerredKeys)
//Render new thead
}
相关文章:
- API密钥使用和检查示例
- react.js中的密钥绑定
- JS对象密钥序列
- 似乎无法使用javascript从AWS 3S中删除密钥
- 加载两个具有相同父密钥名称的json文件
- 如何获取$data.Entity的密钥
- Angular ngRepeat:重复错误(尽管没有重复的密钥)
- CryptoJS和密钥/IV长度
- 基于api密钥的NodeJS web服务
- 输入密钥和firefox提示
- React Rails应用程序中动态子项的密钥分配问题
- 正在Javascript Cookie中设置重复密钥
- 通过localStorage中的密钥获取ID
- 从密钥中获取价值.JavaScript
- Javascript对象中的跨浏览器密钥查找性能
- D3动态json密钥名称
- OAuth 2.0 OpenID连接环回和密钥斗篷
- 从ng条消息中提取ng条消息密钥
- javascript和具有唯一密钥的es6过滤器数组
- 如何获取ajax响应数组的密钥以建立数据表的标头