当我调用此代码时:
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']
,但也无效。
答案 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"]);