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

使用XMLHttpRequest读取JSON数据时出现Uncaught TypeError报错求助

解决读取JSON文件时"Cannot read property 'name' of undefined"报错的问题

我帮你分析下这个报错的核心原因,以及具体的修复方案:

报错的根本原因

你现在直接用xmlhttp.responseText拿到的是字符串格式的JSON,不是可以直接操作的JavaScript对象/数组。当你尝试用digimon[i].name访问时,字符串的索引i对应的是单个字符,这个字符自然没有name属性,所以就抛出了这个类型错误。

具体修复步骤

1. 把响应文本解析为JavaScript对象

首先需要用JSON.parse()方法把字符串转换成可操作的JSON对象/数组:

var digimonData = JSON.parse(xmlhttp.responseText);

2. 确认数据结构并安全循环

解析后要先确认数据是数组(因为你要循环遍历),同时循环时要做安全检查,避免因为数据格式异常再次报错。修改后的完整onload函数示例:

xmlhttp.onload = function() {
  if (xmlhttp.status == 200) {
    var textBox = document.getElementById("digivice");
    var output1 = "";
    var output2 ="";
    var output3 = "";
    
    try {
      // 解析JSON字符串为JS对象
      var digimonData = JSON.parse(xmlhttp.responseText);
      
      // 确认解析结果是数组
      if (Array.isArray(digimonData)) {
        // 遍历数组
        for (var i = 0; i < digimonData.length; i++) {
          // 先检查当前元素是否存在且有name属性
          if (digimonData[i] && digimonData[i].name) {
            output1 += `<p>名称:${digimonData[i].name}</p>`;
            // 根据你的需求处理output2、output3,比如访问其他属性
            // output2 += `<p>等级:${digimonData[i].level}</p>`;
          }
        }
        // 渲染到页面
        textBox.innerHTML = output1 + output2 + output3;
      } else {
        textBox.innerHTML = "加载失败:返回的数据不是数组格式";
      }
    } catch (err) {
      // 捕获JSON解析错误
      textBox.innerHTML = `解析数据失败:${err.message}`;
      console.error("JSON解析出错:", err);
    }
  } else {
    document.getElementById("digivice").innerHTML = `加载失败,状态码:${xmlhttp.status}`;
  }
};

3. 检查你的JSON文件格式

确保你的JSON文件是数组结构,且每个元素都包含name属性,比如:

[
  {"name": "亚古兽", "level": "成长期"},
  {"name": "暴龙兽", "level": "成熟期"},
  {"name": "机械暴龙兽", "level": "完全体"}
]

如果JSON文件格式有误(比如缺少逗号、引号不匹配),JSON.parse()会抛出错误,上面的代码已经用try-catch捕获了这种情况,方便你排查问题。

内容的提问来源于stack exchange,提问作者Zeo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:07:59