javascriptAJAX是什么_如何与服务器进行数据交互【教程】
发布时间 - 2026-01-28 00:00:00 点击率:次AJAX 是用 JavaScript 发起 HTTP 请求、不刷新页面更新局部内容的实践方式,核心是 XMLHttpRequest 或 fetch(),关键在“异步”和“局部更新”;推荐优先使用 fetch(),因其语法简洁、基于 Promise、天然支持 async/await,而 XMLHttpRequest 需手动处理状态码、事件和响应体转换。
AJAX 不是某种新语言,而是用 JavaScript 发起 HTTP 请求、不刷新页面更新局部内容的一套实践方式。 它的核心是 XMLHttpRequest 或更现代的 fetch(),关键在于“异步”和“局部更新”——你改一个表单、点个按钮、下拉加载更多,背后都在用它。
为什么用 fetch() 而不是 XMLHttpRequest?
除非要支持 IE11 及更老浏览器,否则直接用 fetch()。它语法简洁、基于 Promise、天然支持 async/await,而 XMLHttpRequest 需手动处理状态码、监听事件、转换响应体,容易写错。
常见坑:
-
fetch()默认不带 cookie,需显式加{ credentials: 'include' }才能传登录态 -
fetch()只在网络失败时 reject,HTTP 状态码 404/500 不会触发 catch,得手动检查response.ok - POST 提交 JSON 时,必须设
headers: { 'Content-Type': 'application/json' },否则后端可能收不到 body
fetch() 最简可用示例(GET 和 POST)
GET 请求(查数据):
const res = await fetch('/api/users?id=123');
const data = await res.json();
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(data);
POST 请求(发数据):
const res = await fetch('/api/comments', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ content: '你好', post_id: 42 })
});
const result = await res.json();
注意:JSON.stringify() 是必须的,fetch() 不会自动序列化对象;body 只接受字符串、FormData、Blob 等原生类型。
什么时候该用 FormData 而不是 JSON?
上传文件、或表单含 时,必须用 FormData。它能自动处理多部分编码(multipart/form-data),而 JSON 无法表示二进制文件。
实操要点:
- 创建后直接 append 字段:
const fd = new FormData(); fd.append
('title', '测试');
- 传文件时,append 的第二个参数可以是
File对象(来自input.files[0]) - 不用手动设
Content-Type头——fetch()会自动设置并带上边界符 - 后端接收时,不能按 JSON 解析,得用 multipart 解析器(如 Express 的
multer)
真正难的不是发请求,而是处理并发、取消重复请求、统一错误提示、缓存策略——这些没封装好,fetch() 写多了反而更乱。
# javascript
# java
# js
# json
# ajax
# cookie
# 编码
# 浏览器
# app
# 后端
# ai
# 状态码
# 为什么
# express
# 封装
# include
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Python并发异常传播_错误处理解析【教程】
香港服务器如何优化才能显著提升网站加载速度?
Laravel怎么使用Intervention Image库处理图片上传和缩放
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
网站页面设计需要考虑到这些问题
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
Android使用GridView实现日历的简单功能
如何在IIS管理器中快速创建并配置网站?
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
IOS倒计时设置UIButton标题title的抖动问题
如何在自有机房高效搭建专业网站?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
如何在宝塔面板中修改默认建站目录?
实例解析Array和String方法
如何快速搭建自助建站会员专属系统?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
Laravel Fortify是什么,和Jetstream有什么关系
如何快速搭建高效可靠的建站解决方案?
如何在阿里云完成域名注册与建站?
如何做网站制作流程,*游戏网站怎么搭建?
Laravel如何使用Eloquent进行子查询
如何制作一个表白网站视频,关于勇敢表白的小标题?
网站图片在线制作软件,怎么在图片上做链接?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
企业网站制作这些问题要关注
,在苏州找工作,上哪个网站比较好?
Laravel如何实现API版本控制_Laravel版本化API设计方案
JS去除重复并统计数量的实现方法
Android仿QQ列表左滑删除操作
java ZXing生成二维码及条码实例分享
如何选择PHP开源工具快速搭建网站?
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何快速配置高效服务器建站软件?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
如何确保西部建站助手FTP传输的安全性?
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
北京企业网站设计制作公司,北京铁路集团官方网站?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
浅析上传头像示例及其注意事项
jQuery中的100个技巧汇总
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
,交易猫的商品怎么发布到网站上去?
Linux系统运维自动化项目教程_Ansible批量管理实战


