You need to enable JavaScript to run this app. 原生JS如何解析JSON商品数据 渲染到已搭建的轮播组件
优惠活动
大模型
产品
解决方案
定价
更多

原生JS如何解析JSON商品数据 渲染到已搭建的轮播组件

代码现存问题梳理
  • JSON本身存在语法错误:你给出的结构示例中itemsData数组内多嵌套了一层重复的对象左括号,写为"itemsData": [{ { ... } ],这种格式无法通过JSON解析校验,会直接触发解析失败。
  • XMLHttpRequest配置错误:代码中request.responseText = 'json'属于完全无效的赋值操作,既不会改变响应内容,也不会实现响应自动转对象的效果。XMLHttpRequest设置响应类型的正确属性是responseType,而非手动修改responseText的值。
  • 数据层级取错:所有商品数据是存放在JSON响应的itemsData属性下的数组,你当前代码拿到解析后的整个JSON对象后,直接对根对象做循环遍历,根本无法触达内层的商品列表,自然拿不到目标字段值。
  • 渲染逻辑缺失字段映射:当前的渲染代码仅处理了标题、价格两个字段,没有按照需求把商品跳转链接、商品图片绑定到对应HTML标签上,无法完成完整的商品卡片渲染。
修正后的实现代码

首先是符合语法校验的标准JSON结构:

{
  "itemsData": [
    {
      "productUrl": "hdhdhdhdh.html",
      "imageSrc": "image.jpg",
      "productTitle": "sksksksksk",
      "price": "8383838"
    }
  ]
}

对应修正后的请求与渲染逻辑代码:

const request = new XMLHttpRequest();
request.open('GET', 'myJson.json');
// 正确指定响应类型,浏览器会自动将返回内容解析为JSON对象
request.responseType = 'json';

request.onload = function () {
  // 直接获取解析完成的响应对象,无需手动调用JSON.parse
  const responseData = this.response;
  // 从itemsData属性中取出商品数组
  const goodsList = responseData.itemsData;
  const carouselContainer = document.getElementById('carousel');
  let renderHtml = '';

  // 遍历商品数组,逐字段映射生成对应的轮播项HTML
  for (let i = 0; i < goodsList.length; i++) {
    const goods = goodsList[i];
    renderHtml += `
      <li class="carousel-seat">
        <a href="${goods.productUrl}" class="goods-card">
          <img 
            src="${goods.imageSrc}" 
            alt="${goods.productTitle}" 
            class="goods-cover"
          >
          <h4 class="goods-name">${goods.productTitle}</h4>
          <p class="goods-price">Price: ${goods.price}</p>
        </a>
      </li>
    `
  }

  carouselContainer.innerHTML = renderHtml;
}

request.send();
字段与HTML标签的对应规则
  • productUrl:赋值给<a>标签的href属性,实现点击卡片跳转商品详情的功能
  • imageSrc:赋值给<img>标签的src属性,加载对应商品的展示图
  • productTitle:一方面赋值给商品标题<h4>的文本内容,另一方面作为图片的alt文本,提升页面可访问性
  • price:赋值给价格段落的文本位置,渲染商品售价信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 05:36:04