目标:前端系统,后端系统等,统一处理Session超时和系统错误的问题。

可能需要处理的问题:Session超时、系统500错误、普通的业务错误、权限不足。

同步请求
 
           Session超时,登录拦截器,重定向到登录页面。
           500等系统错误,SpringMVC自定义ExceptionHanlder,跳转到系统错误页面,给访客友好的提示。 
            业务错误和权限不足,与500类似。

相对而言,同步方式,处理起来还是比较容易的。

异步请求

2种方式

1.后端登录拦截器,发现Session超时,给个标记。
   后端系统错误捕捉,给个标记。

比如:
  

if (CommonUtil.isAjaxRequest(request)) {
response.setHeader(BERROR, "yes");
CommonUtil.jsonError(response);
return null;
}

前端
  

<script>
$(function() {
$.ajaxSetup({
contentType : "application/json;charset=utf-8",
complete : function(XMLHttpRequest, textStatus) {
// 通过XMLHttpRequest取得响应头,
var blogin = XMLHttpRequest.getResponseHeader("blogin");
if (blogin == "yes") {
alert("Session time out2");
window.location = "${frontLoginUrl}";
}
var berror = XMLHttpRequest.getResponseHeader("berror");
if (berror == "yes") {
alert("Session error2");
}
}
});
});
</script>

2. 封装jquery的post方法。
  

function post(url, params, fn) {
$.post(url, params, function(data) {
if(data.code==-1){
alert("Session time out");
return;
}
if(data.code==-5){
alert("System error.");
return;
}
if(data.code ==0){
alert("出了点小问题,"+data.msg);
return;
}
if(data.code == -2){
alert("权限不足,请联系网站管理员.");
return;
}
fn(data);
});
}

调用方式:
  

post(base + "/home/bankcard/doadd.json", {
"bank" : bank,
"card" : card
}, function(data) { }

参考资料http://daichangfu.iteye.com/blog/1705097、某前端王的建议

补充几点

1.后端拦截器加标记。
   好处是:前端用ajaxSetup,前端没有干扰到任何已有的代码。比如原来$.post不用修改。
   坏处是:后端要改。

2.前端统一封装post,正好反过来。 
   前端需要修改已有的代码。 
   后端不需要修改。 

Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法的更多相关文章

  1. Ajax请求Session超时解决

    web前端js代码: $.ajaxSetup({ contentType : "application/x-www-form-urlencoded;charset=utf-8", ...

  2. AJAX请求中含有数组解决办法

    当我们发送AJAX请求的数据中带有数组时,是不能像普通JSON数据一样,直接放在data里发送给后台,比如有这样一个数据需要发送给后台: { "orderId": 22, &quo ...

  3. 【微信开发】微信公众平台接入及绑定提示“请求URL超时”的解决办法

    成为微信开发者的第一步--微信公众平台接入 第一步:填写服务器配置 在开发->基本配置处启用服务器配置.修改配置 其中URL是开发者用来接收微信消息和事件的接口URL. Token可由开发者可以 ...

  4. 66.ajax--ajax请求多个url解决办法

    ajax请求多个url解决办法 以下四种方法是我找的,我也进行实践过. 测试中有四个请求接口,原本需要13S,用了第三种方法缩减到7S,但是仍不能达到2S以内. 所以仅供参考,待我找到能缩减到2S以内 ...

  5. HTTP 408请求超时错误解决办法

    错误描述 对于大多数网站而言,我们所看到的错误消息已经是开发者定制过的页面,比如我们最常见的自定义404错误页面,一般而言,我们看到的408错误应该是类似这样的提示:“408:Request Time ...

  6. WebAPI中无法获取Session对象的解决办法

    在MVC的WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 public override void Init() { PostAut ...

  7. Asp.Net保存session的三种方法 (Dll文件更新导致session丢失的解决办法)

    1. InProc模式(默认值):asp.net将session保存到当前进程中,这种方式最快,但是不能多台服务器共享session,且会话状态数据容易丢失. <sessionState mod ...

  8. ajax提交session超时跳转页面使用全局的方法来处理

    来自:http://www.jb51.net/article/43770.htm 如果是ajax提交,超时时从服务器发出的跳转命令就不会起作用,所以如果是session超时,而且是在ajax请求,就在 ...

  9. 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法

    单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...

随机推荐

  1. android 仿ios 对话框已封装成工具类

    对话框 在android中是一种非经常见的交互提示用户的方式,可是非常多产品狗都叫我们这些做android的仿ios,搞的我们android程序猿非常苦逼,凭什么效果老是仿ios,有没有一点情怀,只是 ...

  2. 最大似然 vs. 最小二乘

    有一篇是比较最大似然估计和最小二乘法的: http://www.cnblogs.com/hxsyl/p/5590358.html 最大似然估计:现在已经拿到了很多个样本(你的数据集中所有因变量),这些 ...

  3. 推荐一款稳定快速免费的前端开源项目 CDN 加速服务

    前面学习到什么是CDN,全称是Content Delivery Network,即内容分发网络.CDN的通俗理解就是网站加速,CPU均衡负载. CDN的基本思路是尽可能避开互联网上有可能影响数据传输速 ...

  4. vue2.0 踩坑记录之组件

    - did you register the component correctly? For recursive components, make sure to provide the " ...

  5. C语言深度剖析-----内存管理的艺术

    动态内存分配 为什么使用动态内存分配 例:记录卖出的商品 卖出商品最多只能记录1000个 两种改进的方法 都需要动态内存分配 第二种方法需要重置内存 calloc和realloc realloc重置内 ...

  6. VS2012 打包部署程序

      一. 下载 InstallShield 2015(支持VS2012) VS2012没有自带打包工具,所以要先下载并安装一个打包工具.我采用微软提供的打包工具:  InstallShield2015 ...

  7. [Debug] Chrome Devtools: Elements - Console Integration

    The Element Inspector in Chrome DevTools offers powerful integration with the console - learn how to ...

  8. [Ramda] Declaratively Map Predicates to Object Properties Using Ramda where

    Sometimes you need to filter an array of objects or perform other conditional logic based on a combi ...

  9. [Preact] Use State and Props in the Component Render Function

    Preact offers, in addition to the regular component API from React, the ability to access both props ...

  10. Yarn架构基本概况(一)

    1)引言 针对MRv1在扩展性.可靠性,资源利用率和多框架的支持上存在着明显的不足.进而诞生了下一代的MapReduce的计算框架MapReduce Version2,MRV1中有一个非常大的问题就是 ...