🐸 青蛙编程网
首页 / 前端 / AJAX / 1. AJAX 是什么

AJAX 是什么

这是什么:AJAX = Asynchronous JavaScript And XML,「异步 JavaScript 和 XML」——泛指不刷新整个网页、在后台和服务器交换数据的技术。

为什么用:没有它,页面上每一点数据变化都得整页重载,用户只能对着白屏干等。有了它,点「加载更多」只追加那一段内容,别的部分纹丝不动——又快又顺滑。

如何用:现代浏览器统一用 fetch 发请求。本章先建立「请求-响应」「异步」两个概念,下一章就写出第一个真实请求。

一句话原理:浏览器替你去跑腿

把浏览器想象成服务员,你是顾客:

你(页面 JS)──「帮我拿 3 号桌的菜单」──> 浏览器 ──HTTP 请求──> 服务器
你(继续招呼客人,不干等)                    │
你 <──「菜单拿到了」── 浏览器 <──HTTP 响应──  ┘

关键在于:发请求后,页面不会停下来干等——这就是「异步」。数据回来那一刻,浏览器通知你事先指定的函数来处理,整页自始至终没有刷新。

写法 刷新整页? 体验
传统表单 / 链接跳转 ✅ 会 每次操作都白屏一闪
AJAX 局部更新 ❌ 不会 只换需要的那块,其余不动

同步 vs 异步:排队买奶茶 vs 取号等叫

同步像排队买奶茶:轮到你之前,你什么都干不了,队伍堵死。异步像取号等叫号:号一取你就自由了,叫到号(数据回来)再去取餐。

用代码感受一下「异步」到底怎么个异步法:

console.log('① 发出请求前')

setTimeout(function () {
  console.log('③ 3 秒后:数据回来了(假装)')
}, 3000)

console.log('② 发出请求后,这行先打印了')

你会看到(按这个顺序):

① 发出请求前
② 发出请求后,这行先打印了
③ 3 秒后:数据回来了(假装)

setTimeout 和 AJAX 一样是异步的:代码不会停在它那里等 3 秒,而是先往下走;3 秒后回调函数才被执行。「先走后到」就是异步的心法,AJAX 的回调/Promise 都是这个套路。

AJAX 的三个身份

名字 是什么 现状
XMLHttpRequest 老牌原生 API,2005 年 AJAX 概念的主角 还在用,但写法繁琐
fetch 浏览器内置的现代 API,基于 Promise 本章主线,新项目首选
axios 等库 第三方封装,功能更全 以后接触框架时会遇到

HTTP 状态码:跑腿的结果单

服务器响应时会带一个三位数状态码,告诉你这单办得怎么样:

状态码 含义 类比
200 成功 菜齐了,请慢用
404 找不到资源 地址写错了,没这家店
500 服务器内部错误 后厨着火了
201 创建成功 新菜已下单(POST 常见)

常见误解:只有网络断了 fetch 才报错;404、500 这种「服务器明确拒绝」,fetch 照样算「成功返回」,要自己检查状态码——下一章的 res.ok 就是干这个的。

记忆口诀:请求发出去,页面照样跑;数据回来时,回调来报到。

📝 本章小结

  • AJAX = 不刷新整页、后台与服务器交换数据的技术统称
  • 核心是异步:发请求后代码继续走,数据回来再执行回调
  • 现代写法用 fetch,老 API 叫 XMLHttpRequest
  • 状态码是结果单:200 成功、404 没找到、500 服务器炸了;404 不算 fetch 的「失败」

动手改

  1. 把 setTimeout 的 3000 改成 0,猜猜打印顺序还变吗(还是 ①②③!异步不因时间短变同步)
  2. 打开 F12 → Network 面板,刷新任意网站,看看一页要发多少请求
  3. 在 Network 里随便点一条请求,找到 Status 列认一认状态码

下一章:fetch:请求数据,发出你的第一个真实请求 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。