JSON:
{
dynamicname1: {
0: "x",
7: "y",
....
},
dynamicname2: {
0: "xx",
7: "yy",
14: "zz",
...
}
}
为服务器(PHP)的每个请求动态生成 dynamicname1
和dynamicname2
。
我可以为每个时间请求和值获取dynamicname
的名称吗?
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var data = JSON.parse(xmlhttp.responseText);
// data[0].name; // i want to get name of variable
$.each(data[0], function(){
alert(this);
});
$.each(data[1], function(){
alert(this);
});
}
}
答案 0 :(得分:4)
您可以使用for in
循环来迭代对象的属性(键):
for(var key in data) {
// key will be dynamicname1 in the first iteration, dynamicname2, etc
console.log(data[key][0]); // x, xx, etc
}
或者,既然你似乎还在使用jQuery,你可以使用[jQuery.each()
] [1]做同样的事情:
$.each(data, function(key, value) {
// key would be dynamicname1, dynamicname2, etc
// value would be the object that corresponds to that key, so equivalent to data[dynamicname1], etc
});
答案 1 :(得分:2)
您可以使用Object.keys
方法(link to MDN)检索动态名称:
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var data = JSON.parse(xmlhttp.responseText);
var keys = Object.keys(data); // keys = ["dynamicname1", "dynamicname2"]
// do whatever you want with it...
}
}