编程副队长头像
副队长JavaScript教程(67)-Ajax初识:背景、历史与核心概念封面图

副队长JavaScript教程(67)-Ajax初识:背景、历史与核心概念

点此查看 所有教程、项目、源码导航

前面我们已经学习了 JS 基础语法、DOM、BOM、本地存储。

从这一篇开始,我们进入网络通信的学习。

在正式写代码发请求之前,我们先搞懂 AJAX 到底是什么、它是怎么来的,理清很多新手容易混淆的概念。

1. 早期网页的痛点

在 AJAX 出现之前,网页的交互模式非常简单:浏览器向服务器发送请求,服务器返回一整个全新的网页,浏览器刷新、整页替换内容。

比如,我们提交表单、点击分页,浏览器都会白屏,页面全部重新加载。

哪怕我们只需要修改页面里一小段文字,也要把整个页面重新请求、重新渲染,存在两个明显问题:

  1. 速度慢,要传输大量重复的 HTML 内容;
  2. 体验差,页面刷新会打断用户操作,输入框里写好的内容经常直接丢失。

当时的网页更像一份 “静态文档”,而不是我们现在熟悉的、流畅的网页应用。大家一直希望有一种方式:只在后台和服务器拿需要的数据,只更新页面局部,不用刷新整个网页。

附加信息:实际开发里,这一套前后通信是前端、后端工程师配合完成的。前端负责页面展示、收集用户输入、发起请求;后端负责编写接口、操作数据库、返回数据。双方按照接口文档约定好地址、参数、返回格式,AJAX 就是前端和后端传递数据的通道。

作为前端初学者,咱们不需要知道后端是怎么开发后端接口的,直接按接口约定调用即可。在本教程中,我会提前写好真实的后端接口,大家可以直接拿来用就行。如果去企业真实工作的话,会有对应的后端工程师写好接口供前端调用的。

2. AJAX 的发展历史

很多同学会误以为,AJAX 是某一个新的 API、新语法,其实不是。

2.1 1999 年:XHR 诞生

微软为了网页版 Outlook 邮件系统,在 IE5 里面实现了 XMLHttpRequest(简称 XHR)对象,这就是最早可以在后台发请求的能力。

但是在很长一段时间里,这个能力很少被开发者使用,其他浏览器也慢慢跟进实现,但是没有形成风潮。

2.2 2004 年前后:Gmail、Google Maps 出圈

谷歌推出 Gmail 和谷歌地图,大量使用这套后台请求的方式。

拖拽地图的时候,后台悄悄加载瓦片图片;收发邮件不用刷新页面,大家第一次感受到网页可以像桌面软件一样流畅。

这个技术已经在用,但是还没有 AJAX 这个名字。

2.3 2005 年:AJAX 这个名词正式诞生

设计师 Jesse James Garrett 发表文章,把这套技术方案命名为 AJAX,全称:Asynchronous JavaScript And XML,异步 JavaScript 和 XML。

从此这个名字快速流行,开启了 Web2.0 的时代,网页从静态页面走向交互式网页应用。

2.4 后续演变

最早大家约定用 XML 格式传递数据;后来 JSON 出现,因为更加轻量、JS 原生友好,慢慢替代 XML,成为主流数据格式。

再后来浏览器新增了 fetch API,同样可以实现 AJAX 的效果。

重点一句话:XHR 是最早实现 AJAX 效果的 API;AJAX 是一套技术思想,不是某一个固定 API。

3. AJAX 的准确概念

AJAX 是一套技术方案、一种开发思想,不是新语言、不是单独的函数。

它的核心目标:在不刷新整个页面的前提下,浏览器在后台和服务器交换数据,拿到数据之后,使用 JS 局部更新页面 DOM。

它原本是多种已有技术组合在一起使用:

  • HTML + CSS:页面展示
  • DOM:JS 修改页面内容
  • JavaScript:控制逻辑、发起请求
  • XMLHttpRequest:用来和服务器通信
  • XML:早期用来传输数据

到今天,概念已经泛化了:

只要满足「后台异步通信、不整页刷新、局部更新页面」,都可以叫做 AJAX 方案。
可以是 XHR,也可以是 fetch;数据格式大多用 JSON,很少再用 XML。

所以名字里的 XML,只是历史遗留,现在写 AJAX 代码几乎不用 XML。

4. HTTP 与接口基础认知

浏览器和服务器通信,需要遵守 HTTP 协议。

浏览器发给服务器的数据叫做请求;服务器返回给浏览器的数据叫做响应。

4.1 常用请求方式

  • GET:一般用来查询、获取数据,参数会拼接在网址后面
  • POST:一般用来提交、新增数据,数据放在请求体里面

4.2 常用响应状态码

  • 200:请求成功
  • 404:请求的地址不存在
  • 500:服务器内部出错

4.3 接口是什么

接口,就是后端提前写好的一个网络地址,专门用来接收前端的请求,处理之后返回数据。前端通过 AJAX 去访问这个接口。

5. 同步 和 异步(通俗理解)

5.1 同步

浏览器发出请求,然后原地等待服务器返回结果,等待期间页面卡住,用户不能做任何操作,服务器返回之后,代码继续往下走。

5.2 异步

浏览器发起请求之后,不会卡住,代码继续往下执行,用户可以正常操作页面;等服务器数据返回之后,再自动执行对应的回调代码,处理数据、更新页面。

AJAX 的核心优势就是异步,不会阻塞页面。

6. 常见误区澄清(非常适合给学生强调)

误区 1:AJAX = XMLHttpRequest

✅ 正确:XHR 是实现 AJAX 的经典方式;fetch 也是实现 AJAX 的方式。AJAX 是思想,XHR、fetch 是工具。

误区 2:AJAX 必须使用 XML

✅ 正确:名字里的 XML 是历史习惯,现在主流是 JSON。

误区 3:AJAX 是浏览器专属语法

✅ 正确:AJAX 描述的是 “前端和服务器异步通信局部刷新” 的模式,Node 里面也有网络请求,但我们一般说 AJAX,特指浏览器端的这套交互。

补充说明:fetch 属于广义 AJAX 方案,但是它不等同于老式的 XHR。

7. 小结

AJAX 的出现,彻底改变了网页的形态。在它之前,网页是 “翻页文档”;在它普及之后,网页变成了可以实时交互的应用。

记住核心:AJAX 就是不刷新页面,后台和服务器拿数据、传数据,局部更新页面的一套技术思想。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/woshisangsang/article/details/169825725

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--