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

作者:麦鸡 来源:麦鸡(Macji) 时间:2009-02-28 14:01:00 

如果我们的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){
  //
 }
}
标签:302,301,跳转,ajax,博客
0
投稿

猜你喜欢

  • 选择utf-8还是GB2312?

    2009-06-19 13:05:00
  • jQuery技巧

    2009-09-27 12:28:00
  • 设计手机端应用时的一些建议

    2011-05-14 16:45:00
  • PHP利用ChatGPT实现轻松创建用户注册页面

    2023-05-25 09:22:16
  • Access:数据转换问题

    2008-11-20 17:02:00
  • Sql Server 和 Access 操作数据库结构Sql语句

    2008-02-11 18:59:00
  • CSS入门了解CSS的伪类

    2007-10-24 19:36:00
  • 信息分类是为了更好的索引

    2010-02-04 17:51:00
  • ASP中使用存储过程介绍

    2008-10-10 12:10:00
  • 有关Oracle数据库的备份情况

    2010-07-30 13:21:00
  • AJAX实现web页面中级联菜单的设计

    2007-09-26 13:37:00
  • 讲解数据库管理系统必须提供的基本服务

    2009-01-04 14:33:00
  • 用javascript实现的汉字简繁转换功能

    2008-05-04 13:15:00
  • ASP 判断是否有中文的代码

    2011-04-15 11:07:00
  • aspjpeg 半透明描边的实现函数

    2008-12-17 12:02:00
  • 宽屏不是用来阅读的

    2009-04-05 15:59:00
  • js检测浏览器语种,适合于多语言版本的站点

    2007-09-12 19:16:00
  • asp 读取文件和保存文件函数代码

    2011-04-04 11:17:00
  • 一次性压缩Sqlserver2005中所有库日志的存储过程

    2012-01-29 17:58:28
  • 一个将半角"转换为中文"的asp函数

    2007-09-19 11:47:00
  • asp之家 网络编程 m.aspxhome.com