ajax error code,针对 ajax 请求抛出异常,http status code 的问题

情景

①前端用 jq 的 $.ajxa 请求服务器

②后端抛出异常

③前端显示异常信息给用户

基础知识

$.ajax 请求成功的条件

http 状态码为 2xx

后端返回数据类型符合预期(dataType)

异常 http 状态码

服务器内部异常:500

用户请求异常:400

规规矩矩的解决方案

json 响应的 http 状态码该怎么来就怎么来

问题

网络运营商会对一些请求失败的状态码进行劫持(https 可以解决)

无法触发 $.ajax 请求成功的回调函数,而是触发失败的回调函数。虽然在失败回调函数中,也可以获取到 json 响应体(如下代码第7行和第11行输出的都是 joson 响应体)但是这样比较麻烦~

$.ajax({

url: '/test/testException',

method: 'get',

dataType: 'json',

success:function (data) {

console.log('成功');

console.log(data);

},

error:function (data) {

console.log('失败');

console.log(data.responseJson);

}

});

好的解决方案

即使是抛出异常,http 状态码也返回 200,确保 $.ajax 的请求成功回调函数被调用。

然后将真实的 http 状态码写入 code 中,如下图所示:

e2a50e1dc01238f5c555e07aae102461.png

最佳解决方案

使用 axios 包发起请求,使用响应拦截器处理。

天蓝, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权

转载请注明原文链接:针对 ajax 请求抛出异常,http status code 的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ajax请求中,通常没有名为"errorInfo"的属性。可能你对Ajax请求的错误处理有一些混淆。 在Ajax中,当请求发生错误时,可以使用以下两种方法来处理错误: 1. 使用`error`回调函数:可以在Ajax请求中添加一个`error`回调函数来处理请求错误。该回调函数会在请求失败时被触发,并接收三个参数:`xhr`对象、错误状态和错误信息。例如: ```javascript $.ajax({ url: "example.com/api", method: "get", dataType: "json", success: function(response) { // 请求成功的处理 }, error: function(xhr, status, error) { console.log("请求出错!"); console.log("错误状态:" + status); console.log("错误信息:" + error); } }); ``` 2. 使用`fail`方法:在jQuery中,还可以使用`fail`方法来处理Ajax请求的错误。例如: ```javascript $.ajax({ url: "example.com/api", method: "get", dataType: "json" }).done(function(response) { // 请求成功的处理 }).fail(function(xhr, status, error) { console.log("请求出错!"); console.log("错误状态:" + status); console.log("错误信息:" + error); }); ``` 在这两种方法中,你可以通过`xhr`对象获取更多的错误信息,例如响应状态码、响应头等。 注意:具体的使用方式可能因编程语言、框架或库而异。上面提供的示例是基于jQuery Ajax的示例。如果你在使用其他框架或库,请提供更多的上下文信息,以便我能够给你更准确的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值