加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
25、Vue-axios拦截器.html 3.23 KB
一键复制 编辑 原始数据 按行查看 历史
Lz12 提交于 2020-05-03 14:42 . axios使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.spinner {
width: 60px;
height: 60px;
background-color: #67CF22;
margin: 100px auto;
-webkit-animation: rotateplane 1.2s infinite ease-in-out;
animation: rotateplane 1.2s infinite ease-in-out;
}
@-webkit-keyframes rotateplane {
0% {
-webkit-transform: perspective(120px)
}
50% {
-webkit-transform: perspective(120px) rotateY(180deg)
}
100% {
-webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg)
}
}
@keyframes rotateplane {
0% {
transform: perspective(120px) rotateX(0deg) rotateY(0deg);
-webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg)
}
50% {
transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
-webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg)
}
100% {
transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
-webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
}
}
</style>
</head>
<body>
<div id="app">
</div>
</body>
<script type="text/javascript" src="js/vue.js"></script>
<!--导包-->
<script type="text/javascript" src="./node_modules/axios/dist/axios.js"></script>
<script type="text/javascript">
Vue.prototype.$axios = axios; // 挂载到全局
var App = {
data() {
return {
isShow: false
}
},
template: `
<div>
<button @click='senAjax'>发起请求</button>
<div class="spinner" v-show='isShow'></div>
</div>
`,
methods: {
// 基本使用
senAjax() {
// 添加请求拦截器
this.$axios.interceptors.request.use(function(config) {
// 在发送请求之前做些什么
var token = localStorage.getItem('token');
if (token) {
config.headers['token'] = token;
}
// 在请求之前显示加载动画
this.isShow = true
console.log(this.isShow)
return config;
}, function(error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
this.$axios.interceptors.response.use(function(response) {
// 对响应数据做点什么
console.log(response.data.token);
// 判断服务器响应回来的数据是否有token 如果有token就保存在浏览器中
if (response.data.token) {
// 将token保存在浏览器的localStorage中
localStorage.setItem('token', response.data.token);
}
// 在数据响应之后关闭动画
this.isShow = false
console.log(this.isShow)
return response;
}, function(error) {
// 对响应错误做点什么
return Promise.reject(error);
});
// 发起请求
this.$axios.get('http://127.0.0.1:8888')
.then(res => {
console.log(res);
})
.catch(err => {
console.log(err)
})
}
}
};
new Vue({
el: '#app',
data() {
return {
}
},
template: `<App/>`,
components: {
App
}
});
</script>
</html>
<!--官网:https://www.kancloud.cn/yunye/axios/234845-->
<!--动画:https://www.cnblogs.com/lhb25/p/loading-spinners-animated-with-css3.html-->
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化