ajax跨域无法获取http错误码

如题.
在调用跨域接口的时候, 如果接口返回500等错误码, 前端无法获取响应的错误码(当然, 200码是能够正常的获取信息).
在前端层面似乎无法解决, 请问服务器端应该如何去做一下修改使得前端能够正常取到错误信息.

ps: 在不能这样返回的前提下: 后台状态码200, 然后数据里面放{code: 500}

阅读 6.9k
6 个回答

ajaxerror回调 了解下

$.ajax({
    url:'test.php',
    success:function(data)
    {
        console.log('success',data);
    },
    error:function(error)
    {
        console.log('error',error.status);//404
    }
});

错误前端也能做处理,不一定得后端做修改,还有就是500是后端错误,你也可以让他们做个错误处理中间件,

你自己可以去浏览器里面看到的,像500这样的不是因为用户造成的问题,我们可以通过不同的状态码进行判断,然后解决
图片描述

500码 是你后台代码报错导致的, 你可以加个try catch 把错无信息返回回去就可以了

不明白是问跨域还是问状态码
AJAX本身即可获取状态码, 大部分ajax框架把它集成到了response
ajax status

我猜你是取错了地方,发生错误的response不能再success(){}中取,一般是error中去取啊!
比如axios的示例

axios.get('/user/12345')
  .catch(function (error) {
    if (error.response) {
      // 请求已发出,但服务器响应的状态码不在 2xx 范围内
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    } else {
      // Something happened in setting up the request that triggered an Error
      console.log('Error', error.message);
    }
    console.log(error.config);
  });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题