vue axios post报400,返回两次错误信息
这是我在main.js里面设置的响应拦截器:
axios.interceptors.response.use(function(res) {
console.log("success");
}, function(err) {
console.log(err); // 打印错误日志
if (err.response && err.response.status == 401) {
router.replace({
path: '/login',
query: {
redirect: to.fullPath
} // 将跳转的路由path作为参数,登录成功后跳转到该路由
});
} else if (err.response && err.response.status) {
return Promise.reject(err.response && err.response.data); // 返回接口返回的错误信息
}
});
下面是页面请求报400时,error有两次打印,不知道为什么?
后台返回的是第二次打印,请问第一次打印是什么回事?
我打断点看了,确实是进入了两次错误打印。
下面是页面代码
方法:我刷新下页面,这边就会只有一次打印,且message提示正确
还一个疑问是,明明后台返回的是下面这个信息,为什么会打印上面的?
补上页面正确提示:
下面这个是错误提示,不能识别data,打断点看是response
error走了两次的问题
忘各位大佬不吝赐教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
控制台第一次打印的是这行代码:
第二次打印的,是这行代码中
中的
err.response.data
,也就是你后端接口正确返回的那个数据。你那个cant read property的提示,你贴出来的代码中也没有操作data属性的代码,所以不知道是哪里出现的问题。
看一下是不是多了一次
OPTIONS
请求,axios
默认请求头是Content-Type:application/json
,这时候是会先发送一个预请求OPTIONS
请求,这是一个不带参数的试探性请求,如果后端没有处理这种请求就可能返回报错。JSON.stringify(err), 看一下你的错误返回数据是什么,error.response应该没有data属性,所以找出第二次弹出data of undefined
post 错误捕获写错了,
axios.post(url).then(res=>{}).catch(err=>{});
你的上面异常直接写在then下面了,语法错了所以会报两次错误.
下面是我自己搭建调用的400错误接口
在axios.interceptors.response 中打印 err.response数据
可以获取返回的错误信息
打印的是这个请求详情,回复里面不能贴图,@夏末流星
我怀疑是axios插件的问题,我换成fetch请求就没出现这个问题了;我就暂时这样规避,之后有大佬知道怎么解决,还请告知下,谢谢!
同求。一直也在找这个答案。
我定义了一个参数去接收response.use返回的number就好了。。
好像return Promise.reject(err.response && err.response.data);不要return, 直接写Promise.reject(err.response && err.response.data)好像也可以,但是这个应该会导致.catch接收补不到error。
第一个方法可以试一下