前端页面加载时自动获取并渲染数据库数据的完整实践指南

秋瑶小哥_4585

秋瑶小哥_4585

2026-03-20

934人浏览

原创

前端页面加载时自动获取并渲染数据库数据的完整实践指南

本文详解如何在网页加载完成后,通过 javascript 发起 get 请求从 express + postgresql 后端拉取数据,并动态渲染到 html 表格中,实现“页面即数据”的实时展示效果。

本文详解如何在网页加载完成后,通过 javascript 发起 get 请求从 express + postgresql 后端拉取数据,并动态渲染到 html 表格中,实现“页面即数据”的实时展示效果。

在完成表单提交(POST)功能后,你自然会面临一个关键问题:如何让页面一打开就显示数据库中已有的全部记录? 答案正是——在 DOM 加载完毕后立即发起一次 GET /mine_info 请求,并将返回的 JSON 数据解析、生成

行,追加至你的 中。这不仅提升用户体验,也是前后端分离开发中的标准实践。

✅ 正确的 GET 请求时机与位置

你不应在表单 submit 事件中嵌套 GET(如注释掉的那段代码),因为那会导致:

  • 提交成功后才去拉数据,用户无法即时看到新增行;
  • 若 GET 失败,界面状态与数据库不一致;
  • 逻辑耦合,违背“关注点分离”原则。

✅ 正确做法是:在页面初始化阶段独立执行 GET 请求。 使用 DOMContentLoaded 事件确保 DOM 就绪后再发起请求:

// script.js —— 新增:页面加载后自动获取并渲染数据
document.addEventListener("DOMContentLoaded", async () => {
  try {
    const response = await fetch('http://my_data:3000/mine_info');
    if (!response.ok) throw new Error(`HTTP ${response.status}`);

    const rows = await response.json();
    const tableBody = document.querySelector('#mine_info tbody') || 
                      document.querySelector('#mine_info');

    // 清空现有数据行(保留表头)
    Array.from(tableBody.children).forEach(el => {
      if (el.tagName === 'TR' && el.children[0]?.textContent !== '№') {
        el.remove();
      }
    });

    // 动态插入新行(假设后端返回字段为:id, n_mine, name_mine, adress, full_name_of_direcor, phone_number)
    rows.forEach((row, index) => {
      const tr = document.createElement('tr');
      tr.innerHTML = `
        <td><p>${index + 1}</p></td>
        <td><p>${row.n_mine || ''}</p></td>
        <td><p>${row.name_mine || ''}</p></td>
        <td><p>${row.adress || ''}</p><div class="aritcle_card flexRow artxards">
											<div class="artcardd flexRow">
												<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill7710" title="前端设计优化skill"><img
														src="https://img.php.cn/upload/skill/000/000/081/179163003435961.jpg" alt="前端设计优化skill" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
												<div class="aritcle_card_info flexColumn">
													<a rel="nofollow" href="/xiazai/skill7710" title="前端设计优化skill" class="overflowclass">前端设计优化skill</a>
													<p class="overflowclass">前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。</p>
												</div>
												<a rel="nofollow" href="/xiazai/skill7710" title="前端设计优化skill" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
												</a>
											</div>
										</div></td>
        <td><p>${row.full_name_of_direcor || ''}</p></td>
        <td><p>${row.phone_number || ''}</p></td>
      `;
      tableBody.appendChild(tr);
    });
  } catch (error) {
    console.error('Failed to load mine info:', error);
    // 可选:在页面显示友好提示,如:<div class="alert">加载失败,请重试</div>
  }
});

⚠️ 注意事项:

  • 确保后端 /mine_info 接口已正确暴露且 CORS 已配置(你已在 app.use(cors()) 中启用,很好);
  • 前端请求 URL 必须与后端服务地址完全一致(如 http://my_data:3000 → 确认该域名/DNS 可解析,或改用 http://localhost:3000 进行本地调试);
  • 表格结构需支持动态插入:建议为
显式添加 id="mine_info_body",便于精准操作;若无 ,则直接操作
的子 tr 元素(如上例所示);
  • 字段名需严格匹配后端返回的 JSON 键名(例如你后端 SELECT * 返回的是 n_mine 而非 N_m,务必核对)。
  • ? POST 后的优雅刷新策略(进阶推荐)

    虽然页面加载时 GET 已解决初始数据问题,但用户提交新数据后,表格应无需整页刷新即可更新。你可在 form.submit 成功回调中,复用同一 GET 逻辑重新拉取最新数据,实现无缝刷新:

    // 在 form.submit 的 try 块末尾添加:
    await fetch('http://my_data:3000/mine_info')
      .then(r => r.json())
      .then(renderTable); // 将上面的渲染逻辑封装为 renderTable(rows) 函数
    
    // 然后调用它:
    function renderTable(rows) {
      const tableBody = document.querySelector('#mine_info tbody') || document.querySelector('#mine_info');
      // ...(同上渲染逻辑)
    }

    这样,用户点击“Send to DB”后,页面保持当前状态,表格瞬间更新,体验更接近现代单页应用(SPA)。

    ? 总结

    • ✅ GET 请求应独立于表单提交,在 DOMContentLoaded 中首次加载;
    • ✅ 使用 fetch() + async/await 处理异步请求,配合 .json() 解析响应;
    • ✅ 动态创建 DOM 元素并注入表格,避免 innerHTML 潜在 XSS 风险(生产环境建议使用 textContent 或模板引擎);
    • ✅ 错误处理不可省略:网络异常、4xx/5xx 响应、JSON 解析失败均需捕获并反馈;
    • ✅ 后续优化方向:添加加载状态(如“Loading…”)、分页支持、搜索过滤等。

    你现在已掌握前后端数据同步的核心闭环:前端加载 → GET 拉取 → 渲染表格 → 用户新增 → POST 提交 → (可选)GET 刷新。这是全栈开发最基础也最关键的交互模式——恭喜你迈出坚实一步!

    前端入门到VUE实战笔记:立即使用
    在学习笔记中,你将探索 前端 的入门与实战技巧!

    相关文章

    PHP速学视频免费教程(入门到精通)
    PHP速学视频免费教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    前端

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    python是前端还是后端
    python是前端还是后端

    Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.11

    2463

    5

    前端如何实现即时通讯
    前端如何实现即时通讯

    实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

    2023.10.09

    5323

    6

    前端和后端的区别
    前端和后端的区别

    前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

    2024.03.19

    6370

    13

    php和前端的关联介绍
    php和前端的关联介绍

    php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

    2024.03.22

    5958

    10

    前端外包工作内容有哪些
    前端外包工作内容有哪些

    前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

    2024.05.22

    843

    5

    html版权符号
    html版权符号

    html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    2023.06.14

    6095

    7

    html在线编辑器
    html在线编辑器

    html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

    2023.06.21

    3432

    4

    html网页制作
    html网页制作

    html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.07.31

    3110

    5

    html空格
    html空格

    html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.01

    3119

    5

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程