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

ReactJS技术问题:JSON数据返回后HTML渲染异常

嘿,我完全懂你这种拿到JSON数据却渲染出混乱HTML的崩溃感!别慌,咱们一步步来排查解决,大概率是动态生成HTML时的字符串拼接或者DOM操作出了小问题。

解决JSON数据渲染HTML混乱的问题

首先,既然你已经能正常获取JSON数据,那咱们重点聚焦在渲染环节。最常见的问题就是字符串拼接时的语法错误或者DOM元素创建逻辑不严谨,导致HTML结构断裂。

推荐用原生JS + 模板字符串的正确姿势

模板字符串(用反引号`包裹)能完美解决字符串拼接时的引号冲突、多行代码可读性差的问题,几乎不会出现结构混乱的情况。下面是针对你的db.json的完整示例:

1. 先准备好HTML容器

<!-- 在你的页面里先放一个用来渲染房屋列表的容器 -->
<div id="houses-container"></div>

2. JS获取数据并渲染的代码

// 获取JSON数据
fetch('db.json')
  .then(response => response.json())
  .then(data => {
    const housesContainer = document.getElementById('houses-container');
    let housesHTML = '';

    // 遍历每个房屋数据
    data.houses.forEach(house => {
      // 先处理图片列表,把每个图片转换成img标签
      const photosHTML = house.photos.map(photo => `
        <img src="${photo}" alt="${house.name} photo" class="house-photo">
      `).join(''); // 把数组转换成连续的字符串

      // 拼接当前房屋的完整HTML结构
      housesHTML += `
        <div class="house-card">
          <h2>${house.name}</h2>
          <p class="house-description">${house.description}</p>
          <div class="house-photos">
            ${photosHTML}
          </div>
        </div>
      `;
    });

    // 把拼接好的HTML插入到容器里
    housesContainer.innerHTML = housesHTML;
  })
  .catch(error => console.error('获取数据出错:', error));

你可能踩过的坑(排查方向)

  • 引号混用错误:如果之前用单/双引号拼接HTML,比如'<img src="' + photo + '"...',一旦字符串里有特殊字符或者引号没对齐,就会直接破坏HTML结构,模板字符串完全避免了这个问题。
  • 标签未闭合:比如循环时忘记闭合div或者img标签,浏览器会自动补全但往往会乱掉结构,用模板字符串写多行代码能清晰看到标签的开闭。
  • 图片路径错误:如果图片显示不出来,浏览器可能会渲染出默认的破碎图片占位符,看起来像是结构混乱,检查下photo1_house_1.jpg这类路径是不是和你的HTML文件在同一目录,或者是不是需要加./前缀(比如./photo1_house_1.jpg)。
  • 直接拼接数组:如果之前直接把house.photos数组插到HTML里,会变成逗号分隔的字符串,肯定会乱,一定要用map转换成img标签再join成字符串。

如果是用React/Vue这类框架,思路类似——都是遍历数据生成对应组件/模板,但核心都是避免字符串拼接的低级错误。先试试上面的原生JS示例,应该能解决你的结构混乱问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:27:46