请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

axios做post请求后,如果返回的是500,则后面的.then方法块不会执行

图片描述
这个代码,如果post失败,比如后端系统返回该数据已经存在,如下图。则.then里的都不会执行。
好奇是不是post的情况下,必须是post成功了,才会执行.then的内容。
如果我想根据后台返回的处理结果,前台给用户弹框提示,要怎么做呢?图片描述

正在回答 回答被采纳积分+3

3回答

云风眠 2020-05-20 17:48:34

axios.get('/user?ID=12345')
 .then(function (response) {
   // handle success
   console.log(response);
 })
 .catch(function (error) {
   // handle error
   console.log(error);
 })
 .then(function () {
   // always executed
 });

这是我从axios 文档那边拿过来的 希望对你有帮助 失败的话应该会跳到catch那边

我自己这边验证是可以的

代码如下: 加了catch 去处理失败情况

https://img1.sycdn.imooc.com//szimg/5ec4fc50094806e108410546.jpg

效果如下: 

https://img1.sycdn.imooc.com//szimg/5ec4fc0909eb7bd614270765.jpg

操作如下:先把network 那边设置成offline 然后 再去请求数据 然后 加了catch 错误就会被捕捉到

你就可以去catch 那边进行错误处理了 

0 回复 有任何疑惑可以回复我~
提问者 arthur_ju 2020-05-08 20:58:46

老师现在不维护不回答问题了吗?

0 回复 有任何疑惑可以回复我~
  • 这个要么是你传过去的信息有错误(可能没传过去,要么是后端处理有错误,才返回500,你可以要后端的同学打印一下你传过去的内容是否符合。
    状态码以5开头,证明是服务器的那边的原因啊,不是你的代码问题
    回复 有任何疑惑可以回复我~ 2020-05-08 22:55:52
  • 提问者 arthur_ju 回复 呀呀呀亚歌 #2
    后端也是我写的呀,就是一个查询,然后如果已经存在了,就抛一个已存在的错误出来。
    我只是奇怪,为什么前端无法根据这个500的返回,进行相应的处理,比如我想弹出一个toast。
    回复 有任何疑惑可以回复我~ 2020-05-09 05:57:00
  • 呀呀呀亚歌 回复 提问者 arthur_ju #3
    因为500本来就是错误,浏览器会抛出错误,这个在Promise里面就是由rejected状态,肯定不是resovle,就不能进入到then的第一个参数里面,你可以写到第二个参数,那个是rejected状态,你可以在那里处理
    回复 有任何疑惑可以回复我~ 2020-05-09 22:48:43
呀呀呀亚歌 2020-05-04 17:03:50

返回500,证明是服务器那边地错误,这个得找后台解决好

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信