后端302触发了jquery ajax的error事件? 400 报错
$.ajax({ type : 'POST', url : url, data : params, async : async || true, dataType : 'json', cache : false, success : function(data, textStatus){ }, error : function(xhr) { if( xhr.status == "200"){ // 兼容调试时301/302重定向导致触发error的问题 console.log(xhr); this.success(eval('('+xhr.responseText+')'),xhr.statusText); return; } alert("请求失败!"); return; }, beforeSend : function() {}, complete : function(event,request) {} });
如上,假如后端请求为302跳转,前端的jquery ajax方法会触发error函数,但是拿到的status却是200,也就是重定向后的结果,我现在是在error函数中重新判断一次再调用success来曲线解决,想请教下这是什么原因造成的,有什么更好的解决办法?
另外,每个页面如果有多次请求(后端均为302重定向),只有第一次会触发error事件,后续的不会,亦不明真相,求赐教
//看jQuery里的成功状态判断,可见302不在成功之列 // Determine if successful isSuccess = status >= 200 && status < 300 || status === 304;
不要使用ERROR属性。使用Ajax Promise的.fail()
促发条件有这些:
400 401 403 404 500/ 其他条件不会触发。
$ajax({} //code here ).done(function(){}) .fail(function(jqXHR){ }) .always(function(){});
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。