
本教程详细介绍了如何在Web页面中使用JavaScript的Fetch API从远程接口获取JSON数据,并将其动态渲染到HTML表格中。文章涵盖了HTML表格结构、异步数据请求、JSON数据解析、DOM元素操作的最佳实践,特别是强调了`DOMContentLoaded`事件的重要性以及正确使用`innerHTML`来填充表格头部和内容,旨在帮助开发者构建功能完善的数据展示页面。
在现代Web开发中,从后端API获取数据并在前端页面展示是常见的需求。本教程将引导您完成这一过程,重点讲解如何利用JavaScript的Fetch API获取JSON数据,并将其动态地渲染到一个HTML表格中。
首先,我们需要一个基本的HTML页面结构,其中包含一个用于展示数据的表格。为了更好地组织表格内容,我们通常会使用<thead>(表格头部)和<tbody>(表格主体)标签。
<!DOCTYPE html>
<html>
<head>
<title>API数据动态表格</title>
<meta charset="UTF-8" />
</head>
<body>
<h1>NASA设施列表</h1>
<table id="data-table">
<thead></thead>
<tbody></tbody>
</table>
<script src="main.js"></script> <!-- 引入外部JavaScript文件 -->
</body>
</html>在上述HTML结构中:
立即学习“前端免费学习笔记(深入)”;
Fetch API是现代浏览器提供的一个强大的接口,用于进行网络请求。它基于Promise,使得处理异步请求更加简洁。
我们将以NASA的一个公开API为例:https://data.nasa.gov/resource/gvk9-iz74.json。
// main.js
// 确保DOM完全加载后再执行脚本
document.addEventListener("DOMContentLoaded", function () {
fetch("https://data.nasa.gov/resource/gvk9-iz74.json")
.then((response) => {
// 检查响应是否成功
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json(); // 将响应体解析为JSON
})
.then((data) => {
// 数据获取成功后,开始渲染表格
renderTable(data);
})
.catch((error) => {
// 捕获请求或解析过程中的错误
console.error("获取数据时发生错误:", error);
document.getElementById('data-table').innerHTML = `<tr><td colspan="4">加载数据失败,请稍后再试。</td></tr>`;
});
});关键点解析:
获取到数据后,我们需要将其格式化为HTML表格行,并插入到<thead>和<tbody>中。
// main.js (在DOMContentLoaded事件监听器内部,紧接在fetch请求之后)
function renderTable(data) {
const tableHead = document.querySelector("#data-table thead");
const tableBody = document.querySelector("#data-table tbody");
// 清空现有内容(可选,如果表格可能被多次更新)
tableHead.innerHTML = '';
tableBody.innerHTML = '';
// 1. 渲染表格头部 (<thead>)
let headerRow = `
<tr>
<th>中心名称</th>
<th>城市</th>
<th>州</th>
<th>邮编</th>
</tr>`;
tableHead.innerHTML = headerRow;
// 2. 渲染表格主体 (<tbody>)
let rowsHtml = "";
data.forEach((facility) => {
// 确保数据字段存在,避免undefined
const center = facility.center || 'N/A';
const city = facility.city || 'N/A';
const state = facility.state || 'N/A';
const zipcode = facility.zipcode || 'N/A';
rowsHtml += `
<tr>
<td>${center}</td>
<td>${city}</td>
<td>${state}</td>
<td>${zipcode}</td>
</tr>
`;
});
tableBody.innerHTML = rowsHtml;
}关键点解析:
将上述HTML和JavaScript代码整合后,您的index.html和main.js文件应如下所示:
index.html:
<!DOCTYPE html>
<html>
<head>
<title>API数据动态表格</title>
<meta charset="UTF-8" />
<style>
/* 简单的表格样式,使其更具可读性 */
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<h1>NASA设施列表</h1>
<table id="data-table">
<thead></thead>
<tbody></tbody>
</table>
<script src="main.js"></script>
</body>
</html>main.js:
document.addEventListener("DOMContentLoaded", function () {
fetch("https://data.nasa.gov/resource/gvk9-iz74.json")
.then((response) => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then((data) => {
renderTable(data);
})
.catch((error) => {
console.error("获取数据时发生错误:", error);
const tableElement = document.getElementById('data-table');
if (tableElement) {
tableElement.innerHTML = `<thead><tr><th>加载失败</th></tr></thead><tbody><tr><td>无法加载数据,请检查网络或稍后再试。</td></tr></tbody>`;
}
});
function renderTable(data) {
const tableHead = document.querySelector("#data-table thead");
const tableBody = document.querySelector("#data-table tbody");
// 清空现有内容,确保每次渲染都是最新的
tableHead.innerHTML = '';
tableBody.innerHTML = '';
// 渲染表格头部
let headerRow = `
<tr>
<th>中心名称</th>
<th>城市</th>
<th>州</th>
<th>邮编</th>
</tr>`;
tableHead.innerHTML = headerRow;
// 渲染表格主体
let rowsHtml = "";
data.forEach((facility) => {
const center = facility.center || 'N/A';
const city = facility.city || 'N/A';
const state = facility.state || 'N/A';
const zipcode = facility.zipcode || 'N/A';
rowsHtml += `
<tr>
<td>${center}</td>
<td>${city}</td>
<td>${state}</td>
<td>${zipcode}</td>
</tr>
`;
});
tableBody.innerHTML = rowsHtml;
}
});通过本教程,您应该已经掌握了在Web页面中从API获取数据并动态渲染到HTML表格的基本方法。以下是一些重要的总结和注意事项:
以上就是Web前端:如何在HTML页面中高效获取API数据并动态渲染表格的详细内容,更多请关注php中文网其它相关文章!
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号