jq封装post请求数据_Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法...

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

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

同步请求:

Session超时,登录拦截器,重定向到登录页面。

500等系统错误,SpringMVC自定义ExceptionHanlder,跳转到系统错误页面,给访客友好的提示。

业务错误和权限不足,与500类似。

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

异步请求:

2种方式

1.后端登录拦截器,发现Session超时,给个标记。

后端系统错误捕捉,给个标记。

比如:if (CommonUtil.isAjaxRequest(request)) {

response.setHeader(BERROR, "yes");

CommonUtil.jsonError(response);

return null;

}

前端

$(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");

}

}

});

});

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) {

}

补充几点1.后端拦截器加标记。

好处是:前端用ajaxSetup,前端没有干扰到任何已有的代码。比如原来$.post不用修改。

坏处是:后端要改。

2.前端统一封装post,正好反过来。

前端需要修改已有的代码。

后端不需要修改。

原文:http://blog.csdn.net/fansunion/article/details/44618915

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值