无法在jQuery AJAX调用中访问对象属性

时间:2013-10-19 13:56:02

标签: javascript jquery ajax

当我调用此代码时:

console.log(data);
console.log(data.email);

我得到了这个结果:

{"userName":"2","email":"2","firstName":"2","lastName":"2","isAdmin":"0","isEnabled":"1"} index.php:162
undefined 

第一个console.log(data);正确输出。然后,我想访问email对象的data属性,为此我使用console.log(data.email);。但是,正如您在上面所看到的,它表示它是“未定义的”。

为什么我无法访问此属性(或任何属性)?注意:我也尝试了data['email'],但也无效。

3 个答案:

答案 0 :(得分:4)

我没有意识到jQuery不会将返回的JSON自动解析为对象。它只是一个JSON字符串。为了解决这个问题,我必须这样做:

data = JSON.parse(data);

跨浏览器:

data = $.parseJSON(data);

答案 1 :(得分:0)

在我的情况下,我可以通过console.log显示该对象,但我无法访问任何属性以获得简单的事情:我没有意识到我的JSON结构错误,作为一个数组一个单一的对象。然后我可以使用索引访问它的属性。

console.log(data.email);

undefined

然后我试了......

console.log(data[0].email);

finallyhereismyattribute@json.com

我刚修好了我的模型,它完美无缺。感谢我的同事Aaron Lil!

答案 2 :(得分:0)

我遇到过同样的问题。为了解决这个问题,我需要创建一个新数组,然后通过迭代" data"将数据对象的每个值放在该数组中。如下:

var arrayTest = [];

$.each(data, function (index, value) {
    arrayTest["email"] = value.email;
    arrayTest["andsoforth"] = value.andsoforth;
    //etc...
});

// Now retrieve data by using arrayTest
console.log(arrayTest["email"]);