vue中采用axios发送请求及拦截器
这几天在使用vue中axios发送get请求的时候很顺手,但是在发送post请求的时候老是在成功的回调函数里边返回参数不存在,当时就纳闷了,经过查阅资料,终于得到了解决方案,在此做一总结:
首先我们在运用npm install axios的时候就会默认安装qs,因此我们就得将qs引入到axios中,然后需要再通过实例化一个新的axios,并且设置他的消息头为'content-type': ‘application/x-www-form-urlencoded'
let qs = require('qs');
let instance = axios.create({
headers: { 'content-type': 'application/x-www-form-urlencoded' }
});
let data = qs.stringify({
"user_id": this.user_id,
"cate_name": this.cateName
});
instance.post("./frontend/web/cate/create", data)
.then(res => {
if (res.status == ) {
alert("添加成功!")
this.initTableData();
}
})
.catch(err => {
console.log(err);
});
优化后:
main.js:
import QS from 'qs'
Vue.prototype.qs = QS
Vue.prototype.$$ajax = Axios.create({
header: { "content-type": "application/x-www-form-urlencoded" }
})
***.vue:
let data = this.qs.stringify({
id: this.user_id,
password: this.newPassword
});
this.$$ajax.post("./frontend/web/user/uppwd", data)
.then(res => {
if (res.status == ) {
alert("恭喜你,密码修改成功!");
this.$router.push({ name: "personalCenter" });
}
})
.catch(err => {
console.log(err);
})
这样就能解决vue中利用axios发送post请求失败的问题。
另外,我们通常在利用 axios 的时候,需要对其进行拦截(请求数据出现 loading 图标),下面代码可对 axios 请求进行拦截:
// http request 请求拦截器,有token值则配置上token值
Axios.interceptors.request.use(
config => {
if (token) { // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了
config.headers.Authorization = token;
}
return config;
},
err => {
return Promise.reject(err);
}); // http response 服务器响应拦截器,这里拦截401错误,并重新跳入登页重新获取token
Axios.interceptors.response.use(
response => {
return response;
},
error => {
if (error.response) {
switch (error.response.status) {
case :
// 这里写清除token的代码
router.replace({
path: 'login',
query: {redirect: router.currentRoute.fullPath}//登录成功后跳入浏览的当前页面
})
}
}
return Promise.reject(error.response.data)
});
Axios.interceptors.request.use(config => {
MintUi.Indicator.open({
text: '加载中...',
spinnerType: 'fading-circle'
});
return config;
})
Axios.interceptors.response.use(response => {
MintUi.Indicator.close();
return response;
})
post方法封装资料:
https://blog.csdn.net/hant1991/article/details/74931158
https://blog.csdn.net/u010214074/article/details/78851093
可借助 vue-axios 组件库
完全封装:
https://www.cnblogs.com/zczhangcui/p/9347447.html
vue中采用axios发送请求及拦截器的更多相关文章
- vue中使用axios发送请求
我们知道,vue2.0以后,vue就不再对vue-resource进行更新,而是推荐axios,而大型项目都会使用 Vuex 来管理数据,所以这篇博客将结合两者来发送请求 1.安装axios cnpm ...
- vue-cli3.x中使用axios发送请求,配合webpack中的devServer编写本地mock数据接口(get/post/put/delete)
vue-cli3.x中使用axios发送请求,配合webpack中的devServer编写本地mock数据接口(get/post/put/delete) 手把手式笔记 Axios配置 安装 axios ...
- vue项目使用axios发送请求让ajax请求头部携带cookie
最近做vue项目时遇到登录权限问题,登录以后再发送的请求头部并没有携带登录后设置的cookie,导致后台无法校验其是否登录.检查发现是vue项目中使用axios发送ajax请求导致的.查看文档得知ax ...
- Vue中使用axios发送ajax请求
作为前后端交互的重要技巧--发送ajax请求,在Vue中我们使用axio来完成这一需求: 首先是下载axios的依赖, npm install --save axios vue-axios 然后在ma ...
- 在vue中使用axios发送post请求,参数方式
由于后台接收的参数格式为FormData格式, 在axios中参数格式默认为, 在传参数前,将原先官方提供的格式 改为如下: axios({ url: '../../../room/listRoomP ...
- vue 中 使用 element-ui 发送请求前 校验全部表单,报警告: [Element Warn][Form]model is required for validate to work!
WEB先生 2020-07-14 20:01:45 754 收藏 分类专栏: vue 文章标签: vue js 版权 报这种错可能有以下两种情况 1.属性绑定错误,确保绑定的是 :model ...
- Vue项目中使用Vuex + axios发送请求
本文是受多篇类似博文的影响写成的,内容也大致相同.无意抄袭,只是为了总结出一份自己的经验. 一直以来,在使用Vue进行开发时,每当涉及到前后端交互都是在每个函数中单独的写代码,这样一来加大了工作量,二 ...
- vue中使用axios与axios的请求响应拦截
VUE中使用Axios axios的安装 npm install axios vue-axios axios在vue的配置与使用 在main.js中引入axios和vue-axios import a ...
- vue全局使用axios插件请求ajax
vue全局使用axios插件请求ajax Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方宣布停止更新vue-resource,并推 ...
随机推荐
- UWP 协议启动
1.创建通过协议启动的项目 AppDemo 2.在项目的Package.appxmanifest 文件里 Extensions 目录下 <Extensions> <uap:Exten ...
- 杭电2054 WA
#include<stdio.h> #include<string.h> ],b[]; int main() { ,len2=,i; ; scanf("%s" ...
- (转) RabbitMQ学习之工作队列(java)
http://blog.csdn.net/zhu_tianwei/article/details/40887717 参考:http://blog.csdn.NET/lmj623565791/artic ...
- ZBrush 2018软件安装激活教程一点通
Zbrush下载地址:https://pixologic.com/CD 安装教程:(此CD代码仅有效一次,一旦此代码被使用,您将收到一封包含你账户信息的电子邮件.请把那封电子邮件保存在你的记录里.) ...
- 优动漫PAINT用户界面介绍
使用优动漫PAINT能够快速实现工程巨大的漫画.插画以及动画,从13年发布至今一直备受好评,目前优动漫PAINT1.6.6.1是最新的版本,新版本的完善也受到更多年轻伙伴的青睐,使用优动漫PAINT可 ...
- EL表达式中,param和requestScope的区别
在看param和requestScope之前,不妨先了解下在java下request的情况: 1. request对象通常用来接收客户端提交到服务端的数据,如:在servlet或者action中可以用 ...
- sessionStorage与clone方法在项目中的应用
//资料列表: //JSON.parse(jsonstr); //json格式字符串转换成json对象 //JSON.stringify(jsonobj); //json对象转换成json格式字符串 ...
- codevs——T2102 石子归并 2
http://codevs.cn/problem/2102/ 时间限制: 10 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Des ...
- 4种方法让SpringMVC接收多个对象
问题背景: 我要在一个表单里同一时候一次性提交多名乘客的个人信息到SpringMVC,前端HTML和SpringMVC Controller里该怎样处理? 第1种方法:表单提交,以字段数组接收: 第2 ...
- PDF转EPUB格式电子书经验总结
依据本人将PDF转换为EPUB电子书的经验,总结整理了这篇文章.因本人水平有限,难免有错误和不足之处,望大家及时批评指正. 写这篇文章时,假定读者已经会使用文中所列出软件的基本操作,比方如何用No ...