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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:25:06