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

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

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

在现代Web开发中,从后端API获取数据并将其展示在前端页面是常见的需求。JavaScript的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中。

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

  API 数据表格      table {      border-collapse: collapse;      width: 100%;    }    th, td {      padding: 8px;      text-align: left;      border-bottom: 1px solid #ddd;    }    th {      background-color: #f2f2f2;    }    
名称 URL Logo
// JavaScript 代码将放在这里

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

// ... (在  标签内)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操作的次数,从而提高了效率。

// ... (在  标签内)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 =>        `          ${item.name_short}          ${item.orig_url}                      @@##@@                  `      ).join(''); // 将数组中的所有HTML字符串连接成一个大字符串  })  .catch(error => console.error('数据获取或渲染失败:', error));

这种优化方法的优势:

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

总结与最佳实践

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

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

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

${item.name_short}

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1530520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
JavaScript编译器原理与Babel插件开发
上一篇 2025年12月20日 22:03:26
为异步 Fetch 请求添加等待动画
下一篇 2025年12月20日 22:03:36

相关推荐

  • win8写字板在哪里打开 win8快速启动写字板程序的几种方式

    可通过开始屏幕搜索“写字板”直接打开;2. 使用Win+R输入write命令启动;3. 在所有应用的Windows系统文件夹中点击写字板图标运行。 如果您需要在Windows 8系统中快速使用基础文本编辑功能,但不确定如何打开写字板,可以通过多种方式迅速启动该程序。以下是具体的操作方法: 本文运行环…

    2026年9月5日
    000
  • 小米手环如何设置哈利波特主题表盘

    小米手环凭借其强大的功能和个性化的表盘设计赢得了众多用户的青睐。如果你是《哈利波特》的忠实粉丝,想要为你的小米手环换上充满魔法气息的主题表盘,可以按照以下步骤轻松完成设置: 首先,请确保你的小米手环已与手机成功配对,并在手机上安装或更新至最新版本的小米运动健康App。 打开小米运动健康App后,进入…

    2026年9月5日
    000
  • win10怎么从u盘启动_win10设置从U盘启动教程

    首先通过高级启动选项、BIOS设置或启动菜单三种方法之一实现U盘启动,具体步骤包括插入U盘、进入设置或BIOS、选择U盘为启动设备并确认。 如果您需要在Windows 10电脑上安装或重装操作系统,通常需要从U盘启动来运行安装程序。以下是实现U盘启动的详细操作方法。 本文运行环境:Dell XPS …

    2026年9月5日
    200
  • 番剧免费观看入口 番剧免费观看无删减网站入口

    每当一部期待已久的新番上映,或是想要重温那些陪伴我们成长的经典之作时,一个资源丰富、更新迅速且体验绝佳的观影入口就显得尤为珍贵。在浩瀚的互联网世界中,无数动漫迷都在寻觅那个能提供高清无删减内容的理想乡,摆脱恼人的广告与不完整的剧情,全身心沉浸在二次元的奇妙世界里,享受最纯粹的视听盛宴。 一、番剧免费…

    2026年9月5日
    000
  • 巴乐兔租房如何缴纳电费

    在巴乐兔租房时,缴纳电费是每位租客日常生活中必不可少的一环。掌握正确的缴费方式,有助于保障用电稳定,避免因欠费带来的不便。 通常情况下,巴乐兔平台提供几种常见的电费缴纳途径。 其一,可通过巴乐兔官方 app 完成缴费。只需打开应用,进入相应的服务页面,找到“电费缴纳”功能。根据提示填写房间号等相关信…

    2026年9月5日
    100
  • Karate Framework:处理带方括号和日期范围的GET请求参数

    本文详细介绍了如何在Karate Framework中构建包含复杂查询参数(如filters[start_date])的GET请求。针对def query无法正确处理带方括号参数名的问题,文章提供了使用param关键字的解决方案,并通过示例代码和请求响应验证了其有效性,旨在帮助用户高效地进行API自…

    2026年9月5日
    100
  • alook浏览器如何设置长按快捷操作

    alook浏览器以其强大的功能和出色的用户体验赢得了众多用户的青睐,其中长按快捷操作更是提升了浏览的便捷性。接下来,我们将详细介绍如何在alook浏览器中设置这些实用的长按功能。 首先,启动alook浏览器应用。进入主界面后,点击屏幕底部的“菜单”按钮,该图标通常由三条平行的横线组成。 随后,在展开…

    2026年9月5日
    100
  • win8系统字体怎么改大小 Win8系统显示字体大小调整方法

    可通过显示设置调整缩放比例,选择预设或自定义大小并重新登录生效;2. 使用Win键加加号快捷键打开放大镜临时放大局部;3. 在应用程序内通过缩放选项或Ctrl加鼠标滚轮调整字体大小。 如果您发现Windows 8系统中的文字显示过小,难以阅读,则可以通过调整系统的缩放比例或字体设置来改善视觉体验。以…

    2026年9月5日
    000
  • 作业帮怎么查看古诗词赏析_作业帮古诗词赏析功能使用

    使用作业帮查看古诗词赏析可通过拍照搜题或手动搜索实现,首页点击“拍照搜题”对准诗词拍照,系统识别后提供原文、注释、译文、赏析及背景等内容;若无法拍照,可输入“诗名+作者”搜索,选择“古诗词”分类查看解析,包含字词解释、白话译文、写作手法和情感主旨等,部分附带朗读音频与考点提示;建议先了解创作背景,结…

    2026年9月5日
    100
  • 如何测试Linux网络接口DMA性能 直接内存访问评估

    如何测试Linux网络接口DMA性能 直接内存访问评估如何测试Linux网络接口DMA性能 直接内存访问评估如何测试Linux网络接口DMA性能 直接内存访问评估如何测试Linux网络接口DMA性能 直接内存访问评估

    要评估linux系统中网络接口dma性能,需确认dma启用状态并测试优化。1. 使用ethtool和/proc文件确认网卡dma是否启用;2. 利用iperf3、netperf、pktgen等工具测试性能并监控cpu使用率;3. 检查dmesg日志中的dma相关错误并观察中断分布;4. 调整网卡多队…

    2026年9月5日 用户投稿
    200
  • 完蛋!我失业了!微软语音游戏App 可用AI查游戏攻略

    ai技术正逐步取代传统网页搜索方式,成为新的发展趋势。微软将这一创新理念引入游戏行业,推出了名为“copilot for gaming”的手机应用,玩家可以借助ai快速获取各类游戏信息,例如游戏推荐、成就解锁方法以及道具合成配方等实用内容。 作为Xbox团队打造的移动应用,“Copilot for …

    2026年9月5日
    000
  • 九号公司创始人兼董事长高禄峰,受邀出席中国-印尼工商界欢迎宴会

    近日,九号公司创始人兼董事长高禄峰作为中国企业代表团的一员,随团访问印度尼西亚,并出席了5月24日晚间举行的中国—印度尼西亚工商界欢迎晚宴。据透露,高禄峰董事长还受邀参加了5月25日由印尼总统主持的小型官方午宴,与当地商界精英展开深入对话。 高禄峰表示:“九号公司的使命是‘让创新的短途交通工具和机器…

    2026年9月5日
    000
  • Claude和ChatGPT有什么区别_Claude与ChatGPT功能对比分析

    Claude在长文本处理和复杂指令遵循上具有显著优势,主要得益于其超大上下文窗口(可达20万token)和“宪法式AI”训练机制。这使得它能同时处理大量文本信息,在法律合同分析、技术文档总结、代码库审查等场景中表现优异。其强大的上下文记忆能力确保了长时间多轮对话的连贯性,不易“失忆”或跑题。同时,宪…

    2026年9月5日
    000
  • 红桃影视最新的VlP入口 红桃影视高清VIP热播电影电视剧免费在线观看

    红桃影视正是这样一个应运而生的优质平台,它打破了传统观影的束缚,凭借其庞大的VIP影视库和完全免费的观看模式,迅速在影视爱好者中积累了极高的人气。无论您是热衷于追看最新上映的热门大片,还是偏爱经典永恒的海外剧集,这里都能为您提供一站式的解决方案,让您轻松沉浸在高清流畅的光影世界中,享受无与伦比的视觉…

    2026年9月5日
    000
  • win8上帝模式怎么开启 Win8开启上帝模式(God Mode)教程

    如果您希望快速访问Windows 8系统中的所有设置和管理工具,可以通过开启“上帝模式”来实现。该模式提供了一个集成的控制面板文件夹,集中了系统的绝大多数配置选项。 本文运行环境:联想ThinkPad E14,Windows 8.1 一、创建上帝模式文件夹 通过手动创建一个特殊命名的文件夹,可以激活…

    2026年9月5日
    200
  • 点淘金币怎么赚取_点淘金币如何快速赚取更多奖励方法

    通过完成日常任务、走路赚金币、孵化元宝、短剧签到和下单返利可高效提升点淘金币收益。1. 每日完成浏览、观看视频等任务并手动领取奖励;2. 开启“走路赚金币”功能,授权步数权限后每日领取对应金币;3. 使用“孵化”功能根据步数积累元宝,每晚确认收益;4. 进入“短剧”专区签到并观看至少一分钟获取奖励;…

    2026年9月5日
    000
  • AI + 重构 B2B 商业基因!百度爱采购数智大会发布首个智能体解决方案

    AI + 重构 B2B 商业基因!百度爱采购数智大会发布首个智能体解决方案AI + 重构 B2B 商业基因!百度爱采购数智大会发布首个智能体解决方案AI + 重构 B2B 商业基因!百度爱采购数智大会发布首个智能体解决方案AI + 重构 B2B 商业基因!百度爱采购数智大会发布首个智能体解决方案

    6月11日,第四届百度爱采购数智大会在杭州隆重召开。本次大会围绕ai技术深度融入b2b产业核心环节展开讨论,并重磅推出首个b2b行业智能体解决方案及ai+赋能计划、超越计划。该方案深度融合视频批量生产、多语言生成、智能撮合与搜索流量赋能四大能力,助力中小企业实现从内容创作到商机转化的全链路智能化升级…

    2026年9月5日 用户投稿
    100
  • 红桃影视秘密网址 红桃影视在线观看入口:秘密

    红桃影视是一个应运而生的综合性娱乐中心,它不仅仅是一个简单的视频播放器,更是一个精心打造的一站式内容聚合地。这里致力于打破信息壁垒,将全网的精彩剧集、热门电影、经典动漫以及时下流行的综艺节目整合在一起,为用户呈现一个丰富多彩、触手可及的视觉盛宴。无论您是钟情于悬疑烧脑的美剧,还是偏爱温情治愈的日韩剧…

    2026年9月5日
    100
  • 百度冲击618,“杀手锏”不止罗永浩

    又到了一年一度的618购物节。 空气中弥漫着浓厚的电商大战气息,各大平台摩拳擦掌,准备展开激烈对决。 在这个传统意义上的“第一梯队”之外,一个“老面孔”的“新伙伴”——百度,正在加快步伐进入这场战斗。 5月23日,距离618还有26天的时间,罗永浩时隔近一年,出现在百度优选的“交个朋友”直播间,仅4…

    2026年9月5日
    100
  • win8如何更改驱动器号和路径_win8更改驱动器号路径操作指南

    首先通过磁盘管理检查存储设备状态,若驱动器号缺失则添加新盘符,若存在冲突可更改或删除无效映射,操作后设备将正常显示并可访问。 如果您尝试在Windows 8系统中访问某个存储设备,但该设备未显示在“此电脑”中或需要调整其驱动器号,则可能是由于驱动器号冲突或未分配所致。以下是解决此问题的步骤: 本文运…

    2026年9月5日
    100

发表回复

登录后才能评论
关注微信