0

ここで、json配列の解析について話している多くのスレッドをStackOverflowで見つけましたが、データの一部を取り戻す方法がわかりません。これが私が持っているものです...

    $('#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.keysまたはfor…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 に答える