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

仅在浏览器解析时出现JSON语法错误的技术求助

问题原因分析
  • 你遇到的语法错误,核心原因是错误地将JSON文件当作JavaScript脚本加载(比如用<script>标签直接引入JSON URL)。浏览器解析<script>标签内容时会按JS语法处理,而JSON的键名是双引号包裹的字符串(如"question": "xxx"),这种格式在JS中会被识别为未赋值的字符串字面量,后面的冒号就触发了语法错误。
  • VS Code不报错是因为它把文件识别为JSON格式,按JSON语法校验,自然没问题。
解决方案

改用fetch API(或XMLHttpRequest)异步请求JSON数据,而不是用<script>标签加载。以下是修正后的loadFlashcards函数示例:

async function loadFlashcards() {
  try {
    // 替换为你的GitHub原始JSON URL
    const response = await fetch('https://raw.githubusercontent.com/你的用户名/仓库名/分支名/flashcards.json');
    if (!response.ok) {
      throw new Error(`请求失败:${response.status}`);
    }
    const flashcards = await response.json();
    // 这里处理拿到的JSON数据,比如渲染到HTML
    renderFlashcards(flashcards);
  } catch (error) {
    console.error('加载闪卡数据失败:', error);
    // 可以在这里给用户显示错误提示
    document.body.innerHTML += '<p>加载数据失败,请稍后重试</p>';
  }
}

// 示例渲染函数
function renderFlashcards(data) {
  const container = document.getElementById('flashcard-container');
  data.forEach(card => {
    const cardElement = document.createElement('div');
    cardElement.className = 'flashcard';
    cardElement.innerHTML = `<h3>${card.question}</h3><p>${card.answer}</p>`;
    container.appendChild(cardElement);
  });
}

// 调用函数
loadFlashcards();
函数优化建议
  • 使用async/await替代回调函数,让代码更易读、逻辑更清晰。
  • 添加错误捕获逻辑,处理网络请求失败、JSON解析失败等异常情况,避免页面崩溃。
  • 增加请求状态判断(如response.ok),处理HTTP错误状态码(4xx、5xx)。
  • 拆分逻辑:将数据请求和页面渲染分离成不同函数,提高代码可维护性。
  • 可以添加加载状态提示,比如在请求发起时显示“加载中...”,请求完成后隐藏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:05:33