You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何这段代码弹出undefined?JSON数据访问问题排查

问题分析:为什么访问display_name返回undefined?

你遇到的问题核心原因很明确——你把原本的JavaScript对象转换成了字符串,却试图去访问字符串的对象属性。

具体来说,你代码里的var a = (JSON.stringify(res.items[0]))这一步,JSON.stringify()方法的作用是把JavaScript对象序列化成JSON格式的字符串。此时变量a已经不再是一个包含用户信息的对象了,而是一段纯文本字符串。字符串本身没有display_name这个属性,所以你调用a.display_name自然会返回undefined。

当你直接alert(a)时能看到内容,是因为你把整个字符串打印出来了,它看起来像对象,但本质上只是一串文本。

修正后的代码

你只需要去掉多余的JSON.stringify(),直接使用返回的对象即可:

<html> 
<head> 
  <meta charset="utf-8"> 
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
  <meta name="viewport" content="width=device-width"> 
  <title>Fetch json example</title> 
  <link rel="stylesheet" href="style.css"> 
</head> 
<body> 
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
  <script> 
    $(document).ready(function(){
      $.ajax({
        url: "https://api.stackexchange.com/2.2/users/4944823?order=desc&sort=reputation&site=stackoverflow",
        type: 'GET',
        dataType: 'json',
        success: function(res) {
          // 直接使用对象,不需要转成字符串
          var user = res.items[0];
          alert(user.display_name);
          // 如果需要查看完整对象结构,推荐用console.log
          console.log(user);
        }
      });
    });
  </script> 
</body> 
</html>

额外提示

如果你需要调试查看对象的完整结构,更推荐使用console.log(user),在浏览器的开发者工具控制台里可以展开对象,清晰看到所有属性和值,比alert更直观。

内容的提问来源于stack exchange,提问作者Wathsara Wishwantha Daluwatta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:22:48