7

当我调用此代码时:

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']哪个也不起作用。

4

3 回答 3

8

我没有意识到 jQuery 不会将返回的 JSON 自动解析为对象。它只是一个 JSON 字符串。要修复,我只需要这样做:

data = JSON.parse(data);

跨浏览器:

data = $.parseJSON(data);
于 2013-10-19T13:59:51.537 回答
1

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

console.log(data.email);

undefined

但后来我尝试...

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

finallyhereismyattribute@json.com

我刚刚修复了我的模型,它运行良好。感谢我的同事 Aaron Lil!

于 2015-02-20T17:40:09.790 回答
1

我遇到过同样的问题。为了修复它,我需要创建新数组,然后通过迭代“数据”将数据对象的每个值放入该数组中,如下所示:

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"]);
于 2016-08-10T09:15:03.520 回答