Javascript xmlhttp - 在JSON中获取变量的名称

时间:2013-04-03 09:36:30

标签: php javascript ajax json

JSON:

{
    dynamicname1: {
        0: "x",
        7: "y",
            ....
    },
    dynamicname2: {
        0: "xx",
        7: "yy",
        14: "zz",
            ...
    }
}
为服务器(PHP)的每个请求动态生成

dynamicname1dynamicname2

我可以为每个时间请求和值获取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);
        });
    }
}

2 个答案:

答案 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...

    }
}