0

我在 StackOverflow 上发现了很多关于解析 json 数组的线程,但我似乎无法弄清楚如何取回一些数据。这是我所拥有的...

    $('#keyword_form').submit(function(e){  
        var gj = $.post('employee_search.php',$('#keyword_form').serialize(),function(data){                
            if(!data || data.status !=1 )
            {
                alert(data.message);
                return false;
            }
            else
            {
                alert(data.message);
            }
        },'json');  
        e.preventDefault();

    });

发送给它的 json 数据看起来像这样......

{
    "status":1,
    "message":"Query executed in 9.946837 seconds.",
    "usernames_count":{
        "gjrowe":5,
        "alisonrowe":4,
        "bob":"1"
    }
}

正如我的功能所示,我可以做alert(data.message);,但我怎样才能访问usernames_count数据?

我的困惑来自数据没有名称/标签的事实。bob是用户名,1是与该用户名关联的返回计数

如果我这样做,alert(usernames_count);我会回来[object Object]

如果我这样做,alert(usernames_count[0]);我会回来undefined

我确定我应该做点什么,JSON.parse();但我还没有做对

4

3 回答 3

5

您可以使用Object.keysfor...in循环 - 请记住在这种情况下使用hasOwnProperty

var users = data.usernames_count;
Object.keys(users).forEach(function(user) {
    console.log(user, users[user]);
});
于 2013-04-13T13:51:22.773 回答
4

尝试这个:

$.each(data.usernames_count, function(username, val) {
    alert(username+" has a value of "+val);
});
于 2013-04-13T13:49:35.603 回答
-1

听起来您的问题是如何迭代usernames_count对象中的条目。你可以这样做:

var key = '';
for(key in data.usernames_count) {

    //check that this key isn't added from the prototype
    if(data.usernames_count.hasOwnProperty(key) {
        var value = data.usernames_count[key];

        //do something with the key and value
    }
}
于 2013-04-13T13:52:41.570 回答