AJax技术

如何正确处理ajax 302跳转问题回博客首页

字号+ 作者:H5之家 来源:H5之家 2017-01-25 10:00 我要评论( )

如果我们的web应用有大量的异步请求,而这些异步请求是在web服务器认证的情况下,那当我们请求发生在服务器认证失效下,服务器自动302到登录页面,那我们异步获

如果我们的web应用有大量的异步请求,而这些异步请求是在web服务器认证的情况下,那当我们请求发生在服务器认证失效下,服务器自动302到登录页面,那我们异步获取的是登录页面的数据。我们看YUI代码,当ajax请求发生301 302属于失败事件。

...
if(httpStatus >= 200 && httpStatus < 300 || httpStatus === 1223){
//
}
...

但事实上,并没有发生失败事件,浏览器会再发一次ajax请求到302的地址,如果还是发生302,一直请求,直到完成请求或者请求跨域失败为止。对于js来说,301 302这种跳转是透明的,无法处理。

测试地址(请用firebug, 打开控制台,查看数据,一目了然)

那到底如何当ajax正确处理302呢,这是浏览器级别的问题,也就是说没有浏览器能正确处理302。对于我们前端来说,正确的验证ajax回来的数据,并给出提示,那也不友好(比如服务器端希望我们去登录页面)。更友好的处理是当服务器端发生302,那ajax就当”错误”处理,也做302跳转。

//success的时候 不是你想要的数据后,做如下验证
if(-1 != data.indexOf('x')){//x为302后页面特定的字符
 var LOGIN_DOMAIN = 'xxx';//302地址
 window.location = LOGIN_DOMAIN;
 return true;
}
//当302跳转后,ajax发生跨域,可以在failure处理,但 ie返回的是o.status 是 0
failure: function(o){
 if(302 == o.status){
  //
 }
}

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • php+ajax登录跳转登录实现思路

    php+ajax登录跳转登录实现思路

    2016-08-07 14:00

  • asp.net(c#)网页跳转七种方法小结

    asp.net(c#)网页跳转七种方法小结

    2015-12-17 19:36

  • ExtAspNet应用技巧(三)

    ExtAspNet应用技巧(三)

    2015-10-04 17:25

  • ThinkPHP页面跳转、Ajax技巧详细介绍(十八)

    ThinkPHP页面跳转、Ajax技巧详细介绍(十八)

    2015-09-14 17:00

网友点评