使用准备
axios是目前前端最热门的Ajax工具库,也是vue和react推荐的Ajax工具包,对于其源码感兴趣的或者想了解其特性的,可以访问其github的链接:https://github.com/axios/axios
下载axios的方法有很多种,这里演示就不使用npn下载了,而是使用CND链接。
但是这里的CDN链接是国外的链接,访问起来会比较慢。
所以推荐网站bootcdn中的链接:https://www.bootcdn.cn/axios/,复制任意链接即可。
然后我们准备前端代码,这里只需要把上节课的按钮复制即可,但是需要把jQuery换成axios的包。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!--引入axios的包-->
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.js"></script>
<style>
.container{
width: 500px;
height: 500px;
margin: 0 auto;
text-align: center;
}
.btn{
width: 150px;
height: 50px;
background-color: rgb(157, 201, 238);
border-radius: 10px;
}
</style>
</head>
<body>
<div class="container">
<h2 class="page_header">axios发送Ajax请求</h2>
<hr/>
<button class="btn">GET</button>
<button class="btn">POST</button>
<button class="btn">通用型方法ajax</button>
</div>
<script>
</script>
</body>
</html>
然后需要准备服务端代码
//省略部分内容,其他部分内容即为上一节的服务端代码
app.all('/axios-server',(request,response)=>{
//设置响应头 设置允许跨域(第一次接触Ajax,不需要完全理解代码)
response.setHeader('Access-Control-Allow-Origin','*');
//允许接收所有类型的响应头
response.setHeader('Access-Control-Allow-Headers','*');
const data = {
"name": "yuque"
};
let str = JSON.stringify(data);
//设置响应体
response.send(str);
})
GET请求
axios发生get请求的方法很简单,使用axios.get()方法就好了。
<script>
const btn = document.querySelectorAll('.btn');
//配置baseURL,简化路径
axios.defaults.baseURL = 'http://127.0.0.1:8000';
btn[0].onclick = function(){
//GET请求,如果每配置baseURL,这里需要写完整路径
axios.get('/axios-server', {
//url 参数
params: {
id:100,
vip:7
},
//请求头信息
headers:{
name:"abc",
age:18
}
}).then(response => {
//获取响应结果
console.log(response);
});
}
</script>
来到浏览器发送GET请求,可以看到这里返回的是全部响应结果,包括响应状态码,状态字符串,甚至连响应体也自动帮我们转换成了js对象。
POST请求
POST请求和GET请求有一些区别,GET请求中,第二个参数就是请求内容;而在POST请求中,第二个参数是请求体内容,第三个参数中是其他请求参数。
//省略部分内容
...
btn[1].onclick = function(){
//上面已经设置baseURL了,这里可以使用简化的url链接
//第二个参数是请求体内容
axios.post('/axios-server',{username:"张三",password:"123456"},{
//url参数
params:{
id:100,
vip:9
},
//请求头
headers:{
a:300,
b:400
}
}).then(response => {
//这个方法和GET方法一样
console.log(response);
})
}
来到浏览器,可以看到axios发送了POST请求,但是需要注意这里的请求体内容是json格式字符串,而不是url查询字符串形式。
通用型方式
通用性方法非常简单,和jQuery也很像,直接使用axios()函数即可,这种方式非常的清晰,自上而下的填写请求参数即可。
//省略部分内容
...
btn[2].onclick = function(){
axios({
//请求方式
method: "POST",
//url
url: '/axios-server',
//url参数
params:{
id:150,
vip:10
},
//头信息
headers:{
a:100,
b:600
},
//请求体
data:{
username:"张三",
password:"123456"
}
}).then(response => {
//输出响应内容
console.log(response);
//响应状态码
console.log(response.status);
//响应字符串
console.log(response.statusText);
//响应体
console.log(response.data);
})
}
来到浏览器,可以看到可以正常的发送我们的请求信息