在 Android 上返回 undefined 的 JavaScript 对象成员

Javascript object member returning undefined on Android

本文关键字:JavaScript 对象 成员 undefined Android 返回      更新时间:2023-09-26

我正在使用 backbone 创建一个 phonegap 应用程序.js。我正在保存到数据库并获得一个对象共鸣:

    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');
    }
    });

控制台.log 在 eclipse 中的输出为:

    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 等都返回"未定义",但是当我字符串化对象时,我可以看到它们有值......

这是因为 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');
    }
    });

实际上,这是一个骨干的东西。 data.username 返回未定义,但 data.get('username') 有效。