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

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

文章目录

  • [1. 早期网页的痛点](#1. 早期网页的痛点)
  • [2. AJAX 的发展历史](#2. AJAX 的发展历史)
    • [2.1 1999 年:XHR 诞生](#2.1 1999 年:XHR 诞生)
    • [2.2 2004 年前后:Gmail、Google Maps 出圈](#2.2 2004 年前后:Gmail、Google Maps 出圈)
    • [2.3 2005 年:AJAX 这个名词正式诞生](#2.3 2005 年:AJAX 这个名词正式诞生)
    • [2.4 后续演变](#2.4 后续演变)
  • [3. AJAX 的准确概念](#3. AJAX 的准确概念)
  • [4. HTTP 与接口基础认知](#4. HTTP 与接口基础认知)
    • [4.1 常用请求方式](#4.1 常用请求方式)
    • [4.2 常用响应状态码](#4.2 常用响应状态码)
    • [4.3 接口是什么](#4.3 接口是什么)
  • [5. 同步 和 异步(通俗理解)](#5. 同步 和 异步(通俗理解))
    • [5.1 同步](#5.1 同步)
    • [5.2 异步](#5.2 异步)
  • [6. 常见误区澄清(非常适合给学生强调)](#6. 常见误区澄清(非常适合给学生强调))
  • [7. 小结](#7. 小结)

前面我们已经学习了 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 就是不刷新页面,后台和服务器拿数据、传数据,局部更新页面的一套技术思想。

相关推荐
程序员大阳1 小时前
副队长JavaScript教程(70)-Ajax同源策略与跨域
javascript·ajax·同源策略·跨越·corp
普通人61 小时前
Web端3D模型加载实战指南_Vue3_uni-app_HTML
前端·javascript·uni-app·html
志尊宝1 小时前
AI原生前端开发(042):AI辅助的路由设计与优化
javascript·react.js·ai-native
Dxy123931021612 小时前
JS DES 加密详解
开发语言·javascript·arcgis
充值内卷12 小时前
我给桌面加了个鱼缸:C++ 写后端,WebView2 里养一座 Three.js 小岛
开发语言·javascript·c++
椒哥15 小时前
一天被问几十次"允许",我统计了 517 次,然后写了个插件
前端·javascript·github
kyriewen15 小时前
我测了 6 种防请求竞态的写法:只有 1 种真能打
前端·javascript·程序员
OpsEye16 小时前
企业大模型压测,需要重点关注哪些指标?
javascript·ai编程
像我这样帅的人丶你还17 小时前
我html生成的doc文档为何在手机文档显示不了图片?
前端·javascript