使用jQuery Ajax过滤实现REST不间断会话
来源:互联网 发布:怎么把淘宝宝贝推广 编辑:程序博客网 时间:2024/05/05 09:03
使用jQuery Ajax过滤实现REST不间断会话
当客户端与服务端的会话超时,发出一个Ajax数据请求,遇到403状态码怎么办?
在Shell终端里,超级管理员会话超时时,会自动显示密码输入确认。对页面来说,是要捕获每个状态码为403的失败请求,待登陆成功后一个个replay,还是在登陆成功后直接刷新页面?
jQuery发展到今天,应该会提供处理这种业务的功能。果然找到madpilot rants一篇文章,这些问题都迎刃而解。
具体过程是:
当请求遇到403错误后,会被放入403队列,并弹出登陆框,当登陆成功后,会自动重发队列中未成功的请求。
不过这个方案目前有一定缺陷:它不支持使用Promise风格添加success回调,success回调得写在options里面,也就是说:
//支持jQuery.ajax("/foo.json",{success: function(data){//TODO}});//而不支持jQuery.ajax("/foo.json").done(function(data){//TODO});
以下方案参考了rants的方案,并考虑到了并发请求都403失败的情形:
require(["jquery"],function($){//Thanks @madpilot rants//See http://myles.eftos.id.au/blog/2011/11/30/how-to-re-play-an-ajax-request-in-jquery-after-an-authentication-error/#.U-iHifmSx8Evar isDialogShown=false;var ajaxQueue=[];jQuery.ajaxSetup({statusCode:{//未登录或登陆后session失效时,服务端会返回状态码403403:function(){ajaxQueue.push(this);if(isDialogShown){return;}isDialogShown=true;require(["infrastructure/user/LoginDialog"],function(LoginDialog){var dialog=new LoginDialog("loginDialog",{onfullfilled:function (){isDialogShown=false;ajaxQueue.forEach(function(context){$.ajax(context);});ajaxQueue.length=0;},onrejected:function(){}});dialog.placeAt(document.body,"beforeEnd")dialog.open();});}}});});
0 0
- 使用jQuery Ajax过滤实现REST不间断会话
- 使用jQuery实现Ajax
- 使用jQuery实现ajax
- 使用 jQuery 实现 Ajax
- 使用jQuery实现Ajax
- jquery实现的不间断滚动插件
- jquery+ajax列表过滤以及高亮的实现
- 使用jQuery轻松实现Ajax
- MVC 使用Jquery实现AJax
- MVC 使用Jquery实现AJax
- 10003---使用jQuery实现Ajax
- 浅谈使用jQuery实现Ajax
- Ajax-02-使用jQuery实现
- ajax(三) 使用jquery实现ajax
- struts2拦截器实现session会话过滤
- AJAX-jQuery实现Ajax
- 使用jQuery实现AJAX帐号验证效果
- 使用jQuery方便快捷的实现Ajax功能
- 优秀的android开源项目
- HDU 4518 ac自动机+数位dp
- 99%国人不知道全球公认最有女人味的十个国家
- ZOJ1589
- Ospaf项目-commits词频统计模块
- 使用jQuery Ajax过滤实现REST不间断会话
- eclipse-maven插件jetty使用
- Oracle 高级函数:分析函数与窗口函数
- java学习路线------just do it!!!
- websphere的 DistrubutedMap缓存问题
- Unity Animation播放的时候失败
- 微信新增的图片广告今日正式上线
- hdu 3342 Legal or Not
- uboot中bootargs