新闻中心

使用 Fetch API 在 HTML 中获取并展示动态数据

2025-10-18
浏览次数:
返回列表

使用 fetch api 在 html 中获取并展示动态数据

本文详细介绍了如何使用 J*aScript 的 Fetch API 从外部接口获取 JSON 数据,并将其动态渲染到 HTML 表格中。文章首先阐明了理解 API 响应结构的重要性,随后对比演示了两种数据渲染方式:一种是逐个创建 DOM 元素的传统方法,另一种是利用 `innerHTML` 和模板字符串进行高效渲染的优化方法,旨在帮助开发者构建性能更优的动态网页。

在现代Web开发中,从后端API获取数据并将其展示在前端页面是常见的需求。J*aScript的Fetch API提供了一种强大且灵活的方式来执行网络请求。本教程将引导您如何使用Fetch API获取数据,并将其动态地渲染到一个HTML表格中。

Fetch API 基础与数据获取

Fetch API是一个基于Promise的接口,用于发出网络请求。它的基本用法非常直观。当您发起一个Fetch请求时,它会返回一个Promise,该Promise在网络响应可用时解析为Response对象。您需要进一步调用.json()方法(如果响应是JSON格式)来解析响应体,它也会返回一个Promise,解析后即可获得实际的数据。

以下是使用Fetch API获取数据的基本结构:

fetch('https://www.sponsorkliks.com/api/?club=11592&call=webshops_club_extension')
  .then(response => {
    // 检查响应是否成功 (HTTP状态码在200-299之间)
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    // 将响应体解析为JSON
    return response.json();
  })
  .then(data => {
    // 在这里处理获取到的数据
    console.log(data);
  })
  .catch(error => {
    // 捕获请求或解析过程中发生的任何错误
    console.error('数据获取失败:', error);
  });

关键点:

  • fetch(url): 发起GET请求到指定的URL。
  • .then(response => response.json()): 当请求成功时,将响应体解析为JSON对象。这是异步操作,因此需要另一个.then()来处理解析后的数据。
  • .catch(error => console.error(error)): 捕获在请求或JSON解析过程中可能发生的任何错误。

理解 API 响应结构

在处理从API获取的数据时,最重要的一步是理解其返回的JSON结构。一个常见的错误是假设API直接返回一个数组,而实际上它可能返回一个包含数组的对象。

以我们使用的API为例:https://www.sponsorkliks.com/api/?club=11592&call=webshops_club_extension。 当您调用此API并解析其JSON响应时,您会发现数据被封装在一个对象中,其中包含一个名为 webshops 的数组。

{
  "webshops": [
    {
      "id": "...",
      "name_short": "...",
      ""link": "...",
      "orig_url": "...",
      "logo_120x60": "..."
      // ... 更多字段
    },
    // ... 更多webshop对象
  ]
}

这意味着在您的.then(data => { ... })块中,您不应该直接迭代 data,而应该迭代 data.webshops。此外,您需要使用 webshop 对象内部的正确字段名,例如 item.name_short、item.link、item.orig_url 和 item.logo_120x60。

渲染数据到 HTML 表格 (传统 DOM 操作)

一旦获取并理解了数据结构,下一步就是将其渲染到HTML页面。一个常见的做法是动态创建HTML元素并将其附加到DOM中。

WeWedding婚纱影楼小程序 WeWedding婚纱影楼小程序

婚纱影楼小程序提供了一个连接用户与影楼的平台,相当于影楼在微信的官网。它能帮助影楼展示拍摄实力,记录访客数据,宣传优惠活动。使用频率高,方便传播,是影楼在微信端宣传营销的得力助手。功能特点:样片页是影楼展示优秀摄影样片提供给用户欣赏并且吸引客户的。套系页是影楼根据市场需求推出的不同套餐,用户可以按照自己的喜好预定套系。个人中心可以查看用户预约的拍摄计划,也可以获取到影楼的联系方式。

WeWedding婚纱影楼小程序 0 查看详情 WeWedding婚纱影楼小程序

首先,准备好您的HTML表格结构和一些基本样式:

<!DOCTYPE html>
<html>
<head>
  <title>API 数据表格</title>
  <style>
    table {
      border-collapse: collapse;
      width: 100%;
    }
    th, td {
      padding: 8px;
      text-align: left;
      border-bottom: 1px solid #ddd;
    }
    th {
      background-color: #f2f2f2;
    }
  </style>
</head>
<body>
  <table id="api-table">
    <thead>
      <tr>
        <th>名称</th>
        <th>URL</th>
        <th>Logo</th>
      </tr>
    </thead>
    <tbody>
      <!-- 数据将在这里插入 -->
    </tbody>
  </table>

  <script>
    // J*aScript 代码将放在这里
  </script>
</body>
</html>

接下来是使用J*aScript动态填充表格的代码。请注意,这里我们通过解构赋值直接获取 webshops 数组,并使用正确的字段名。

// ... (在 <script> 标签内)
fetch('https://www.sponsorkliks.com/api/?club=11592&call=webshops_club_extension')
  .then(response => response.json())
  .then(({ webshops }) => { // 使用解构赋值直接获取webshops数组
    const tableBody = document.querySelector('#api-table tbody');
    webshops.forEach(item => {
      const row = document.createElement('tr');

      const nameCell = document.createElement('td');
      nameCell.textContent = item.name_short; // 使用正确的字段名
      row.appendChild(nameCell);

      const urlCell = document.createElement('td');
      const urlLink = document.createElement('a');
      urlLink.href = item.link; // 使用正确的字段名
      urlLink.textContent = item.orig_url; // 使用正确的字段名
      urlCell.appendChild(urlLink);
      row.appendChild(urlCell);

      const logoCell = document.createElement('td');
      const logoImg = document.createElement('img');
      logoImg.src = item.logo_120x60; // 使用正确的字段名
      logoImg.alt = item.name_short;
      logoImg.style.maxWidth = '100px';
      logoCell.appendChild(logoImg);
      row.appendChild(logoCell);

      tableBody.appendChild(row);
    });
  })
  .catch(error => console.error('数据获取或渲染失败:', error));

注意事项: 这种通过 document.createElement 和 appendChild 逐个创建并附加DOM元素的传统方法在处理大量数据时可能会导致性能问题,因为它涉及频繁地修改DOM树,触发浏览器重绘和回流。

优化数据渲染 (使用 innerHTML 和模板字符串)

为了提高性能,尤其是在处理大量数据时,推荐使用 innerHTML 结合模板字符串 (``) 来一次性构建HTML字符串,然后将其插入到DOM中。这种方法减少了DOM操作的次数,从而提高了效率。

// ... (在 <script> 标签内)
fetch('https://www.sponsorkliks.com/api/?club=11592&call=webshops_club_extension')
  .then(response => response.json())
  .then(({ webshops }) => {
    document.querySelector('#api-table tbody').innerHTML =
      webshops.map(item =>
        `<tr>
          <td>${item.name_short}</td>
          <td><a href="${item.link}">${item.orig_url}</a></td>
          <td>
            @@##@@
          </td>
        </tr>`
      ).join(''); // 将数组中的所有HTML字符串连接成一个大字符串
  })
  .catch(error => console.error('数据获取或渲染失败:', error));

这种优化方法的优势:

  • 性能提升: 减少了DOM操作的次数,因为只进行了一次 innerHTML 赋值。
  • 代码简洁: 使用模板字符串可以更直观地构建复杂的HTML结构。
  • 可读性好: HTML结构在J*aScript代码中清晰可见。

总结与最佳实践

通过本教程,您应该已经掌握了使用Fetch API从外部接口获取数据,并将其高效渲染到HTML表格中的方法。以下是一些关键的总结和最佳实践:

  1. 始终检查API响应结构: 在开始渲染数据之前,务必通过 console.log() 或浏览器开发者工具检查API返回的JSON结构,确保您能正确访问所需的数据字段。
  2. 错误处理不可忽视: 使用 .catch() 块来优雅地处理网络请求或数据解析过程中可能出现的错误,提升用户体验。
  3. 优化DOM操作: 对于需要渲染大量数据的场景,优先考虑使用 innerHTML 结合模板字符串 (map().join('')) 的方式,而不是频繁地创建和附加DOM元素,以获得更好的性能。
  4. 清晰的HTML和CSS结构: 保持HTML结构语义化,并使用CSS进行样式分离,提高代码的可维护性。

掌握这些技术将使您能够更有效地构建动态和响应式的Web应用程序。

${item.name_short}

以上就是使用 Fetch API 在 HTML 中获取并展示动态数据的详细内容,更多请关注其它相关文章!


# 大连seo培训怎么操作  # 您的  # 并将其  # 过程中  # 将其  # 自定义  # 您需要  # 抖音直播可以营销推广么  # SEO基础T恤打结教程  # 复选框  # seo外链功能  # 专业的广州微网站建设  # 推广平台营销口号  # 钢城网站建设价格  # 河北seo教程软件  # 如何做好自媒体营销推广  # 同仁网站推广  # css  # 数据结构  # 字段名  # web  # 状态码  # 后端  # 工具  # app  # 浏览器  # go  # json  # 前端  # js  # html  # java  # javascript 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 实现分段式页面滚动导航:CSS与J*aScript教程  AO3镜像入口大全 AO3网页版内容访问全集  魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】  J*aScript类型检查_j*ascript代码规范  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程  React Router 嵌套组件中 URL 重定向问题的解决方案  C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件  Win10系统服务哪些可以禁用 Win10安全优化服务列表【干货】  qq游戏手机版下载安装_qq游戏移动端入口  抖音极速版最新版本 抖音极速版官方下载地址  Go Martini框架:动态服务解码后的图片内容  J*aScript:在map操作中高效处理空数组  Win11文件资源管理器卡顿怎么修 Win11重置资源管理器进程优化响应速度【修复方法】  精准捕获:如何在页面中监听除特定元素外的所有点击事件  J*aScript中如何高效提取对象指定属性  深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量  Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换  谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航  夸克浏览器图书入口 夸克手机浏览器阅读入口  Django模型中自动计算可用余额的实现方法  怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】  qq游戏网页版直接玩_qq游戏免下载快速入口  ACG动漫视频网入口 ACG动漫*免费正版观看地址  写好的html代码怎么运行出来_运行写好的html代码方法【教程】  Python实现多节点属性重叠度分析教程  美团外卖商家服务中心入口 美团商家版官网入口  如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略  天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】  c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学  C++编译期如何执行复杂计算_C++模板元编程(TMP)技巧与应用  微信网页版官方入口直达 微信网页版网页版登录使用方法  动漫花园资源网使用步骤_动漫花园资源网下载流程  蛙漫移动版在线看 蛙漫手机浏览器直达入口  腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录  c++如何使用Meson构建系统_c++比CMake更快的构建工具  12306几点到几点不能订票? | 官方最新系统维护时间全解析  可靠CSGO开箱平台解析 CSGO开箱网合集  手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议  学习通网页版快速入口 学习通官网网页版直接打开  excel如何生成目录 excel一键生成工作表目录超链接  BetterDiscord插件中安全更新用户简介的实践指南  知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法  win11专注助手在哪 Win11免打扰模式设置与自动化规则【指南】  荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程  微博网页版首页入口 微博电脑端官网登录链接  Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示  HTML元素状态管理:根据DIV内容动态启用/禁用按钮  AO3最新入口2025公告_AO3中文官网合集  怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】 

搜索