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

use*_*388 6 javascript ajax jquery

当我调用此代码时:

console.log(data);
console.log(data.email);
Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

{"userName":"2","email":"2","firstName":"2","lastName":"2","isAdmin":"0","isEnabled":"1"} index.php:162
undefined 
Run Code Online (Sandbox Code Playgroud)

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

为什么我无法访问此属性(或任何属性)?注意:我也试过data['email']哪些也行不通.

use*_*388 8

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

data = JSON.parse(data);
Run Code Online (Sandbox Code Playgroud)

跨浏览器:

data = $.parseJSON(data);
Run Code Online (Sandbox Code Playgroud)

  • 您应该使用 `$.parseJSON` 而不是 `JSON.parse()`,因为 jquery 以跨浏览器的方式处理它。 (4认同)
  • 您也可以通过告诉 jquery 您的服务器正在返回 JSON 来修复它。`dataType: "json"` 或将服务器的响应内容类型设置为 `"application/json"` (2认同)