AJAX与Axios基础
目录
一、AJAX 核心概念解析
1.1 AJAX 的核心概念
1.2 AJAX 工作原理
1.3 AJAX 局限性
二、axios 库介绍
2.1 Axios 核心特性
2.2 快速上手
2.3 核心配置项
2.4 错误处理标准方案
三、Axios 核心配置项
3.1 常用核心配置项
1. url
2. method
3. params
4. data
5. headers
3.2 完整配置示例
3.3 关键区别总结
3.4 注意事项
四、Axios常用HTTP方法
4.1 GET 请求(获取数据)
1. 基础用法
2. 带查询参数
3. async/await 写法
4.2 POST 请求(创建数据)
1. 提交 JSON 数据
2. 提交 FormData(文件上传)
4.3 PUT 请求(全量更新)
4.4 PATCH 请求(部分更新)
4.5 DELETE 请求(删除数据)
4.6 完整配置示例
4.7 关键区别总结
4.8 注意事项
五、接口文档规范与使用
5.1 标准接口文档要素
5.2 文档使用示例
六、form-serialize 高效表单处理
6.1 form-serialize 插件语法
6.2 使用示例
6.3 注意事项
一、AJAX 核心概念解析
AJAX(Asynchronous JavaScript and XML)是一种在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容的技术。它通过异步通信提升用户体验,现已成为现代 Web 开发的核心技术之一。
1.1 AJAX 的核心概念
-
异步通信:浏览器在后台发送请求,不阻塞用户界面。
-
数据格式:早期使用 XML,现主流为 JSON。
-
无刷新更新:仅更新页面局部内容,减少流量消耗。
1.2 AJAX 工作原理
-
用户触发事件(如点击按钮)。
-
创建请求对象:浏览器通过
XMLHttpRequest或Fetch API发起请求。 -
发送请求:向服务器发送 HTTP 请求(GET/POST)。
-
服务器处理:服务器接收请求并返回数据(JSON/XML/HTML)。
-
接收响应:客户端处理返回数据,更新 DOM。
1.3 AJAX 局限性
-
代码冗余:需手动处理 XHR 状态、错误、超时等逻辑。
-
回调地狱:多层异步操作嵌套,代码可读性差。
-
功能有限:缺少自动 JSON 转换、拦截器、取消请求等现代特性。
-
代码冗余:需手动处理 XHR 状态、错误、超时等逻辑。
-
回调地狱:多层异步操作嵌套,代码可读性差。
-
功能有限:缺少自动 JSON 转换、拦截器、取消请求等现代特性。
二、axios 库介绍
Axios 是一个基于 Promise 的现代化 HTTP 客户端库,用于浏览器和 Node.js 环境。它简化了 AJAX 请求的发送与响应处理,支持拦截器、取消请求、自动转换 JSON 数据等高级功能,是前端开发中最流行的 HTTP 请求工具之一。
2.1 Axios 核心特性
-
基于 Promise:支持
async/await和链式调用。 -
浏览器 & Node.js:全平台兼容(浏览器使用
XMLHttpRequest,Node.js 使用http模块)。 -
自动数据转换:自动将请求/响应数据转换为 JSON 或其他格式。
-
拦截器:全局拦截请求和响应,实现统一处理(如添加 Token)。
-
取消请求:支持请求取消功能,避免资源浪费。
-
并发处理:提供
axios.all和axios.spread处理并发请求。
2.2 快速上手
引入:
<script src="https://fastly.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
语法:
axios({// ...请求选项
}).then(result => {// 处理成功数据
}).catch(error => {// 处理失败错误
})
示例:
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>axios({url: 'https://api.example.com/data',method: 'GET',params: { page: 1 }}).then(response => {console.log(response.data);});
</script>
2.3 核心配置项
| 参数 | 说明 | 类型 |
|---|---|---|
| url | 请求地址 | string |
| method | 请求方法(默认GET) | string |
| params | URL 查询参数 | object |
| data | 请求体数据 | object |
| headers | 自定义请求头 | object |
2.4 错误处理标准方案
axios.post('/api/login', credentials).then(response => {// 处理成功响应}).catch(error => {console.error('错误详情:', error.response?.data);alert(error.response?.data.message || '请求失败');}).finally(() => {// 通用清理逻辑});
三、Axios 核心配置项
3.1 常用核心配置项
| 参数 | 说明 | 类型 |
|---|---|---|
| url | 请求地址 | string |
| method | 请求方法(默认GET) | string |
| params | URL 查询参数 | object |
| data | 请求体数据 | object |
| headers | 自定义请求头 | object |
1. url
-
作用:目标资源的 URL 地址(必需项)。
-
格式:
-
绝对路径:
https://api.example.com/users -
相对路径:
/api/users(需配合baseURL配置使用)。
-
-
示例:
axios({url: '/users',baseURL: 'https://api.example.com', // 实际 URL → https://api.example.com/users });
2. method
-
作用:指定 HTTP 请求方法(默认
GET)。 -
可选值:
GET、POST、PUT、DELETE、PATCH等。 -
示例:
axios({method: 'POST',url: '/submit',data: { name: 'John' } });
3. params
-
作用:设置 URL 查询参数(仅用于
GET等支持查询参数的方法)。 -
特点:
-
参数会被自动序列化为
?key1=value1&key2=value2。 -
支持对象或 URLSearchParams 格式。
-
-
示例:
axios.get('/search', {params: {keyword: 'axios',page: 2} }); // 实际 URL → /search?keyword=axios&page=2
4. data
-
作用:设置请求体数据(用于
POST、PUT、PATCH等方法)。 -
特点:
-
数据格式由
headers['Content-Type']决定:-
application/json:传递 JSON 对象(Axios 默认自动转换)。 -
multipart/form-data:传递 FormData(常用于文件上传)。 -
application/x-www-form-urlencoded:传递 URL 编码字符串。
-
-
-
示例:
// 提交 JSON 数据 axios.post('/users', {name: 'Alice',age: 25 });// 提交 FormData const formData = new FormData(); formData.append('file', fileInput.files[0]); axios.post('/upload', formData, {headers: { 'Content-Type': 'multipart/form-data' } });
5. headers
-
作用:自定义 HTTP 请求头。
-
常见场景:
-
身份认证(
Authorization)。 -
设置内容类型(
Content-Type)。 -
跨域相关头(如 CORS)。
-
-
示例:
axios.post('/auth/login', { username: 'admin', password: '123' }, {headers: {'Content-Type': 'application/json','Authorization': 'Bearer token123', // JWT 认证'X-Custom-Header': 'value' // 自定义头} });
3.2 完整配置示例
axios({url: '/api/users',method: 'POST',params: { debug: true }, // 仅对 GET 有效(此处无效,因为 method 是 POST)data: { username: 'user123',password: 'secret'},headers: {'Content-Type': 'application/json','Authorization': 'Bearer token123'},timeout: 5000 // 超时时间(毫秒)
})
.then(response => {console.log(response.data);
})
.catch(error => {console.error('请求失败:', error);
});
3.3 关键区别总结
| 配置项 | 适用方法 | 数据位置 | 常见数据格式 |
|---|---|---|---|
params | GET、DELETE 等 | URL 查询字符串 | 键值对(对象或 URLSearchParams) |
data | POST、PUT、PATCH 等 | 请求体(Body) | JSON、FormData、URL 编码字符串 |
3.4 注意事项
Content-Type 匹配:
- 使用
data时需确保headers['Content-Type']与数据格式一致,否则服务器可能无法解析。 - 若
data为对象且未设置Content-Type,Axios 默认按application/json序列化。 - 使用
FormData时需显式设置'Content-Type': 'multipart/form-data'。
GET 请求的 data 无效:
GET请求的data配置会被忽略(HTTP 规范不支持 GET 带请求体)。
参数编码:
params中的特殊字符会被 Axios 自动 URL 编码(如空格 →%20)。
四、Axios常用HTTP方法
4.1 GET 请求(获取数据)
用途:从服务器获取资源(如查询列表、详情)。
1. 基础用法
// 获取所有用户
axios.get('/api/users').then(response => {console.log(response.data);}).catch(error => {console.error('请求失败:', error);});
2. 带查询参数
// 分页查询(/api/users?page=2&limit=10)
axios.get('/api/users', {params: {page: 2,limit: 10}
});
3. async/await 写法
async function fetchUser(id) {try {const response = await axios.get(`/api/users/${id}`);console.log(response.data);} catch (error) {console.error('获取用户失败:', error);}
}
4.2 POST 请求(创建数据)
用途:向服务器提交新数据(如新增用户)。
1. 提交 JSON 数据
axios.post('/api/users', {name: 'John',age: 30
})
.then(response => {console.log('创建成功:', response.data);
});
2. 提交 FormData(文件上传)
const formData = new FormData();
formData.append('avatar', fileInput.files[0]); // 文件
formData.append('username', 'john_doe'); // 文本字段axios.post('/api/upload', formData, {headers: {'Content-Type': 'multipart/form-data' // 必须设置}
});
4.3 PUT 请求(全量更新)
用途:替换服务器上的整个资源(需提供完整数据)。
// 更新用户 ID 为 1 的所有数据
axios.put('/api/users/1', {name: 'John',age: 31, // 全量更新,未提供的字段会被置空email: 'john@example.com'
});
4.4 PATCH 请求(部分更新)
用途:更新资源的部分字段(仅提交需要修改的数据)。
// 仅更新用户 ID 为 1 的年龄
axios.patch('/api/users/1', {age: 31 // 其他字段保持不变
});
4.5 DELETE 请求(删除数据)
用途:删除服务器上的资源。
// 删除用户 ID 为 1
axios.delete('/api/users/1').then(() => {console.log('删除成功');});
4.6 完整配置示例
// 全局配置(可选)
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = 'Bearer token123';// 发起请求
axios({method: 'post',url: '/users',data: { name: 'Alice' },headers: { 'X-Custom-Header': 'value' },timeout: 5000 // 超时时间(毫秒)
})
.then(response => {console.log(response.data);
})
.catch(error => {if (error.response) {console.error('服务器返回错误:', error.response.status);} else if (error.request) {console.error('未收到响应:', error.request);} else {console.error('请求配置错误:', error.message);}
});
4.7 关键区别总结
| 方法 | 幂等性 | 语义 | 请求体 | 典型场景 |
|---|---|---|---|---|
| GET | 幂等 | 获取资源 | 无 | 查询数据 |
| POST | 非幂等 | 创建资源 | 有 | 新增用户、提交表单 |
| PUT | 幂等 | 替换整个资源 | 有 | 全量更新用户信息 |
| PATCH | 非幂等 | 更新资源的部分字段 | 有 | 修改用户邮箱 |
| DELETE | 幂等 | 删除资源 | 无 | 删除文章、用户 |
4.8 注意事项
-
幂等性:GET、PUT、DELETE 是幂等的(多次执行结果相同),POST、PATCH 非幂等。
-
Content-Type:POST/PUT/PATCH 需根据数据类型设置请求头(如
application/json)。 -
错误处理:统一通过
.catch()或try/catch捕获网络错误和业务错误。
五、接口文档规范与使用
接口文档:由后端提供的描述接口的文章。

5.1 标准接口文档要素
-
接口地址
-
请求方法
-
请求参数(类型、是否必需)
-
响应格式
-
错误代码
-
示例调用
5.2 文档使用示例
// 根据文档实现用户信息接口
async function getUserProfile(userId) {try {const response = await axios({url: `/api/users/${userId}`,method: 'GET',headers: {'Authorization': `Bearer ${token}`}});return response.data;} catch (error) {handleApiError(error);}
}
六、form-serialize 高效表单处理
使用 form-serialize 插件可以快速收集目标表单范围内表单元素的值。
6.1 form-serialize 插件语法
-
引入 form-serialize 插件到自己网页中
-
使用 serialize 函数
-
参数1:要获取的 form 表单标签对象(要求表单元素需要有 name 属性-用来作为收集的数据中属性名)
-
参数2:配置对象
-
hash:
-
true - 收集出来的是一个 JS 对象结构
-
false - 收集出来的是一个查询字符串格式
-
-
empty:
-
true - 收集空值
-
false - 不收集空值
-
-
-
6.2 使用示例
<script src="./lib/form-serialize.js"></script>
const form = document.querySelector('#userForm');
const data = serialize(form, {hash: true, // 返回JS对象empty: true // 包含空值
});
// 输出示例
{username: 'test',profile: {age: '25',gender: 'male'}
}
6.3 注意事项
-
表单元素必须设置
name属性 -
嵌套字段使用
parent[child]语法命名 -
文件上传需要特殊处理
相关文章:
AJAX与Axios基础
目录 一、AJAX 核心概念解析 1.1 AJAX 的核心概念 1.2 AJAX 工作原理 1.3 AJAX 局限性 二、axios 库介绍 2.1 Axios 核心特性 2.2 快速上手 2.3 核心配置项 2.4 错误处理标准方案 三、Axios 核心配置项 3.1 常用核心配置项 1. url 2. method 3. params 4. data …...
[OS] vDSO + vvar(频繁调用的处理) | 存储:寄存器(高效)和栈(空间大)| ELF标准包装规范(加速程序加载)
vDSO vvar 一、社区公告板系统(类比 vDSO vvar) 想象你住在一个大型社区,管理员(内核)需要向居民(用户程序)提供实时信息(如天气预报、社区活动时间等)。直接让每个居…...
Sentinel源码—1.使用演示和简介二
大纲 1.Sentinel流量治理框架简介 2.Sentinel源码编译及Demo演示 3.Dashboard功能介绍 4.流控规则使用演示 5.熔断规则使用演示 6.热点规则使用演示 7.授权规则使用演示 8.系统规则使用演示 9.集群流控使用演示 5.熔断规则使用演示 (1)案例说明熔断和降级 (2)Sentin…...
IDEA的常用设置(更新中......)
文章目录 1. 自动导包2. 忽略大小写3. 设置项目文件编码格式4. 设置方法之间分割线5. 设置字体大小6. 设置IDEA默认不打开项目持续更新中...... 1. 自动导包 File->Settings->Editor->General>Auto Import 2. 忽略大小写 File->Editor->General->Code…...
SQL注入之时间盲注攻击流程详解
目录 一、时间盲注原理 二、完整攻击流程 1. 注入点确认 2. 基础条件判断 3. 系统信息收集 (1)获取数据库版本 (2)获取当前数据库名 4. 数据提取技术 (1)表名枚举 (2)列名猜…...
【ROS2】行为树 BehaviorTree(三):异步操作
【ROS】郭老二博文之:ROS目录 1、简述 前面的例子中,使用过同步节点 SyncActionNode,当调用到该节点时,成功返回SUCCESS,失败返回FAILURE,并且线程会等待该节点执行完毕。 如果需要异步操作,比如节点执行需要很长时间,不能立刻返回结果,可以先去执行其它任务,等该…...
比特币不是solidity编写吗,比特币不是基于 Solidity
对!你这个问题问得非常精准——比特币不是基于 Solidity 的,而且它和以太坊智能合约的设计思路也完全不同。我们来讲清楚👇 ❌ 比特币不是 Solidity 的! 📌 原因如下: 项目智能合约语言说明比特币&#x…...
c# Kestrel
Kestrel 是 .NET 中用于 ASP.NET Core 应用程序的跨平台 Web 服务器。它是轻量级且高性能的,能够处理大量并发连接,常被用作 ASP.NET Core 应用的默认服务器。以下为你介绍 Kestrel 的基本使用和配置: 基本使用 创建一个简单的 ASP.NET Cor…...
x86 保护模式中的GDT表是什么?
GDT(全局描述符表,Global Descriptor Table)是 x86 保护模式下用于描述不同类型内存段的一个重要数据结构。在保护模式下,GDT 用于管理和保护系统内存,它通过提供一组段描述符来定义内存的访问权限、大小、类型等属性 …...
筛选条件在on和where中的区别(基于hivesql)
理解筛选条件在on和where中的区别,最好先理解sql的执行顺序,尽管实际执行时不同的物理执行引擎可能会有特定的优化,但是逻辑执行顺序必须遵循: 1)from:确定数据源是什么,from后可以是单表&#…...
自然语言处理Hugging Face Transformers
Hugging Face Transformers 是一个基于 PyTorch 和 TensorFlow 的开源库,专注于 最先进的自然语言处理(NLP)模型,如 BERT、GPT、RoBERTa、T5 等。它提供了 预训练模型、微调工具和推理 API,广泛应用于文本分类、机器翻…...
vue3+vite+ts使用daisyui/tailwindcss
vite创建vue3脚手架 npm init vitelatest myVue3 – --template vue cd .\myVue3\ npm i npm run dev 安装tailwindcss/daisyui 依赖安装 npm install -D tailwindcss postcss autoprefixer daisyui npx tailwindcss init -p 这条命令将生成postcss.config.js(因为加了…...
Android常见界面控件、程序活动单元Activity练习
第3章 Android常见界面控件、第4章程序活动单元Activity 一. 填空题 1. (填空题)Activity的启动模式包括standard、singleTop、singleTask和_________。 正确答案: (1) singleInstance 2. (填空题)启动一个新的Activity并且获取这个Activity的返回数据ÿ…...
大模型在直肠癌诊疗全流程预测及应用研究报告
目录 一、引言 1.1 研究背景与目的 1.2 国内外研究现状 1.3 研究方法与创新点 二、大模型预测直肠癌的原理与技术基础 2.1 大模型技术概述 2.2 用于直肠癌预测的数据来源 2.3 模型构建与训练过程 三、术前预测 3.1 肿瘤分期预测 3.1.1 基于影像组学的 T 分期预测模型…...
大联盟(特别版)双端互动平台完整套件分享:含多模块源码+本地部署环境
这是一套结构清晰、功能完整的互动平台组件,适合有开发经验的技术人员进行模块参考、结构研究或本地部署实验使用。 该平台覆盖前端展示、后端服务、移动端资源以及完整数据库,采用模块化架构,整体部署流程简单清晰,适合自研团队参…...
设计模式:迪米特法则 - 最少依赖,实现高内聚低耦合
一、迪米特法则简介 迪米特法则(Law of Demeter,简称 LoD),也称为“最少知识法则”,核心思想是:一个对象应当对其他对象有最少的了解,仅与直接相关的对象交互。通过减少对象之间的耦合度&#…...
Spark-SQL
Spark-SQL 概述 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块 Shark 是伯克利实验室 Spark 生态环境的组件之一,是基于 Hive 所开发的工具,它修改了内存管理、物理计划、执行三个模块,并使之能运行在 Spark 引擎上…...
多任务响应2(Qt)
多任务响应2 扩展方案1. 设计思路2. 示例代码3. 说明 在多任务响应1的基础上,当任务响应比较复杂时,需要整合多个模块的信息。 扩展方案 利用【中介者模式】或【系统上下文】来整合多个模块的信息,并在命令对象中通过依赖注入(D…...
【MySQL】MVCC工作原理、事务隔离机制、undo log回滚日志、间隙锁
一、什么是MVCC? MVCC,即 Multiversion Concurrency Control(多版本并发控制),它是数据库实现并发控制的一种方式。 MVCC 的核心思想是: 为每个事务提供数据的“快照”版本,从而避免加锁&…...
无人机气动-结构耦合技术要点与难点
一、技术要点 1. 多学科耦合建模 气动载荷与结构响应的双向耦合:气动力(如升力、阻力、力矩)导致结构变形,而变形改变气动外形,进一步影响气流分布,形成闭环反馈。 建模方法: 高精度C…...
七大数据库全面对比:ClickHouse、ES、MySQL等特性、优缺点及使用场景
七大数据库全面对比:ClickHouse、ES、MySQL等特性、优缺点及使用场景 引言 在数字化时代,数据库的选择对于业务的成功至关重要。本文将通过表格形式,对ClickHouse、Elasticsearch(ES)、MySQL、SQL Server、MongoDB、HBase、Cassandra这七大数据库进行特性、优缺点及使用…...
element-ui plus 中 filter-method 函数多次触发问题解决
前情提要 点进这个文章的小伙伴,应该都是为了解决一个需求,把原本的前端过滤改为后端过滤,但是将filter-method修改为后端取数据后,发现其触发了很多次。博主也是在修改表格过滤时用到了这个坑,本篇文章为大家解决一下…...
基于【Lang Chain】构建智能问答系统的实战指南
🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Lang Chain 2、LangChain在问答系统中的核心优…...
idea的快捷键使用以及相关设置
文章目录 快捷键常用设置 快捷键 快捷键作用ctrlshift/注释选中内容Ctrl /注释一行/** Enter文档注释ALT SHIFT ↑, ALT SHIFT ↓上下移动当前代码Ctrl ALT L格式化代码Ctrl X删除所在行并复制该行Ctrl D复制当前行数据到下一行main/psvm快速生成入口程序soutSystem.o…...
TestHubo安装及入门指南
TestHubo是一款开源免费的测试管理工具,提供一站式测试解决方案,涵盖功能测试、接口测试、性能测试以及 Web 和 App 测试等多个维度。TestHubo 整合了全面的测试能力,使团队可以在一个平台内完成所有测试需求。本文将介绍如何快速安装配置及入…...
react tailwindcss最简单的开始
参考教程: Install Tailwind CSS with Vite - TailwindCSS中文文档 | TailwindCSS中文网https://www.tailwindcss.cn/docs/guides/vite操作过程: Microsoft Windows [版本 10.0.26100.3476] (c) Microsoft Corporation。保留所有权利。D:\gitee\tailwi…...
openGauss新特性 | 自动参数化执行计划缓存
目录 自动化参数执行计划缓存简介 SQL参数化及约束条件 一般常量参数化示例 总结 自动化参数执行计划缓存简介 执行计划缓存用于减少执行计划的生成次数。openGauss数据库会缓存之前生成的执行计划,以便在下次执行该SQL时直接使用,可…...
3、组件:魔法傀儡的诞生——React 19 组件化开发全解析
一、开篇:魔法傀儡的觉醒 "每个React组件都像一具魔法傀儡,"邓布利多校长挥动魔杖,空中浮现出闪烁的代码字符,"它们能自主思考、协同工作,甚至能跨越时空(服务器与客户端)执行任…...
使用Python实现矢量路径的压缩、解压与可视化
引言 在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要。本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,再将其解压还原,并通过matplotlib进行可视化。这一过程可应用于字体设计、矢量图…...
达梦数据库迁移问题总结
更多技术博客,请关注微信公众号:运维之美 问题一、DTS工具运行乱码 开启图形化 [rootlocalhost ~]# xhost #如果命令不存在执行sudo yum install xorg-x11-server-utils xhost: unable to open display "" [rootlocalhost ~]# su - dmd…...
