JS渲染JSON数据到HTML时出现TypeError报错排查
问题原因
报错的核心原因是JSON结构访问层级写错了:
- 你代码里写的是
success.data[0].task,默认以为返回的JSON是{ "data": [/* 卡片内容 */] }这种带外层包裹的结构 - 但你实际的
1.json最外层直接就是卡片数组,根本没有data这个字段。执行的时候success.data是undefined,读取undefined的索引0就会抛出你看到的类型错误。 - 另外你fetch路径里用了Windows系统的反斜杠
\做分隔符,Web环境统一要求用正斜杠/,部分浏览器/部署环境下反斜杠会直接导致404找不到文件。
修复代码
直接替换原来的fetch逻辑就行,额外加了基础容错,避免其他边界情况报错:
fetch('gamesets/starter-content/1.json') .then(res => { if (!res.ok) throw new Error('JSON文件加载失败'); return res.json(); }) .then(cardList => { if (Array.isArray(cardList) && cardList.length) { document.getElementById("gamecard-content").textContent = cardList[0].task; } }) .catch(err => console.error('卡片渲染出错:', err));
改动说明
- 路径修正:把反斜杠全换成正斜杠,适配所有Web运行环境的路径规则
- 层级修正:去掉了多余的
.data访问,因为返回结果本身就是数组,直接取第一项的task字段即可 - 容错补充:加了请求状态判断、数组类型和非空判断,避免文件加载失败、JSON为空的时候抛未捕获错误;如果task是纯文本,用
textContent比innerHTML更安全,避免XSS隐患。
修复后刷新页面,p标签就会正常显示你JSON里配置的taskText内容。
内容的提问来源于stack exchange,提问作者nightmarelines
相关产品推荐
相关产品推荐

