如何通过index.html展示远程数据库的数据:HTML与后端接口通信

风芳姑娘_6720

风芳姑娘_6720

2026-06-08

899人浏览

原创

html中fetch('/api/data')报错主因是file://协议下被浏览器拦截,须部署于http://服务器(如python -m http.server);后端需返回合法json及access-control-allow-origin头,前端须检查response.ok并妥善处理错误。

如何通过index.html展示远程数据库的数据:html与后端接口通信

HTML 里写 fetch('/api/data') 就报错?先看协议和部署位置

浏览器拒绝执行请求,大概率不是代码写错了,而是 HTML 文件正用 file:// 协议双击打开。这种模式下,fetch 直接被拦截,控制台显示 Failed to fetch 或 net::ERR_FAILED。

必须把 index.html 放进 Web 服务器环境运行,比如:

  • 本地开发:用 python3 -m http.server 8000 启一个静态服务,然后访问 http://localhost:8000/index.html
  • 生产环境:Nginx/Apache 配置好 root 路径,确保 HTML 和后端 API 在同一域名下(或至少同源)
  • 若后端 API 在 http://localhost:3000,前端也得从 http://localhost:3000 加载 HTML,否则触发跨域

后端接口返回数据但页面空白?检查响应头和 JSON 格式

即使 fetch 看似成功,也可能因后端没设正确响应头或返回了非 JSON 内容,导致 .json() 报错或静默失败。

后端必须明确声明:

  • Content-Type: application/json; charset=utf-8
  • Access-Control-Allow-Origin: *(开发时)或具体域名(生产时)
  • 响应体是合法 JSON:不能有 PHP 的 echo "debug info"; 混在前面,也不能漏掉 json_encode() 包裹

简单验证方式:直接在浏览器地址栏打开 http://localhost:3000/api/data,看是否显示纯 JSON(如 [{"id":1,"name":"Alice"}]),且无 HTML 标签或错误提示。

html-deploy
html-deploy

使用 htmlcode.fun 将 HTML 内容或文件部署到网页,适用于用户要求“部署到网页”“托管此 HTML”“生成此前端...的实时链接”等场景。

下载

前端渲染时数据没插入 DOM?别跳过 error 处理和空值判断

fetch 成功不代表数据可用;网络通、状态码 200、JSON 解析成功,三者缺一不可。常见疏漏:

  • 没加 catch(),错误全吞掉,控制台也看不到提示
  • 后端返回空数组或 null,但前端代码假设一定有 data[0].name,直接报 Cannot read property 'name' of undefined
  • 用 innerHTML = data.map(...).join('') 但 data 是对象而非数组(比如后端返回 {"result": [...]})

最小安全写法示例:

fetch('/api/users')
  .then(r => {
    if (!r.ok) throw new Error(`HTTP ${r.status}`);
    return r.json();
  })
  .then(data => {
    if (!Array.isArray(data)) throw new Error('Expected array');
    document.querySelector('#list').innerHTML = data
      .map(u => `<div>ID: ${u.id}, Name: ${u.name || '-'}</div>`)
      .join('');
  })
  .catch(err => console.error('Render failed:', err));

为什么不能把数据库连接写在 HTML 里?安全与架构边界必须守住

有人试过把 mysql2.connect() 或数据库地址硬编码进 JS,或者用 eval() 动态拼 SQL——这等于把数据库账号密码、内网地址、表结构全暴露给用户。任何懂 F12 的人都能拿到并连你生产库。

真正该隔离的三件事:

  • 数据库凭证只出现在后端配置中(如 process.env.DB_PASSWORD 或 .env 文件),绝不进前端构建产物
  • 所有 SQL 查询必须参数化,禁止字符串拼接,哪怕只是 WHERE id = ${id} 也不行
  • 后端接口要收敛权限:/api/users 返回全部用户?不行;应按角色返回,或加 user_id = ? 参数校验归属

最简链路可靠,但最容易被绕过的,恰恰是“图省事少写一行校验”或“先跑通再说”的那一行代码。

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

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

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

下载

相关标签:

html web服务器 json

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

相关专题

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

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

2023.08.11

2263

5

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

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

2024.03.19

5970

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5286

10

html版权符号
html版权符号

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

2023.06.14

5495

7

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

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

2023.06.21

3152

4

html网页制作
html网页制作

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

2023.07.31

2810

5

html空格
html空格

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

2023.08.01

2839

5

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2023.08.11

4719

6

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

2023.08.11

2801

3

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 219人学习