0

backbone.js を使用して phonegap アプリを作成しています。データベースに保存し、オブジェクトの応答を取得しています:

    match_user.save({
            'email':user.email,
            'password':password,
            'username':username,
            'facebook_login':'yes',
            'facebook_id':user.id
    }, 
    {
    success:function(data){
        console.log('data is ');
        console.log(data);

                console.log('data.username is ');
                console.log(data.username);

                console.log('data.password is ');
                console.log(data.password);

        console.log('JSON.stringify(data) is ');
        console.log(JSON.stringify(data));



        that.setSession(data);
    },
    error:function(){
        console.log('in the error');
    }
    });

Eclipse での console.log の出力は次のとおりです。

    10-16 14:01:08.490: I/Web Console(10185): data is  
    10-16 14:01:08.490: I/Web Console(10185): [object Object]

            10-16 14:20:51.500: I/Web Console(11297): data.username is  
        10-16 14:20:51.505: I/Web Console(11297): undefined

        10-16 14:20:51.510: I/Web Console(11297): data.password is  
        10-16 14:20:51.510: I/Web Console(11297): undefined 

    10-16 14:01:08.495: I/Web Console(10185): JSON.stringify(data) is
    {"first_name":"",
    "last_name":"",
    "email":"test@test.com",
    "username":"user5654401630",
    "password":"ipk9d",
    "facebook_login":"yes",
    "facebook_id":"5675685685"} 

data.username、data.email などはすべて「未定義」を返しますが、オブジェクトを文字列化すると値があることがわかります...

4

2 に答える 2

1

これは、JSON.stringify が文字列を返し、json をオブジェクトとしてもう持っていないためです。したがって、同じものを文字列化せずにデータを取得する必要があります。

 match_user.save({
            'email':user.email,
            'password':password,
            'username':username,
            'facebook_login':'yes',
            'facebook_id':user.id
    }, 
    {
    success:function(data){
        console.log('data is ');
        console.log(data);

        console.log('JSON.stringify(data) is ');
        console.log(data);

        console.log('JSON.stringify(data).username is ');
        console.log(data.username);

        var obj = JSON.parse(data);
        console.log('obj.username is ');
        console.log(obj.username);

        that.setSession(data);
    },
    error:function(){
        console.log('in the error');
    }
    });
于 2013-10-16T13:14:48.370 に答える
0

実際、それはバックボーンのことでした。data.username は undefined を返しましたが、data.get('username') は機能します。

于 2013-10-16T13:36:41.087 に答える