session超时 ajax访问,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,正好反过来。

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

后端不需要修改。

Ajax请求Session超时解决

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

Q_OBJECT

所有QObject的派生类在官方文档中都推荐在头文件中放置宏Q_OBJECT,那么该宏到底为我们做了哪些工作?在qobjectdef.h中有下面的代码: #define Q_OBJECT \ publ ...

ICMP Internet控制报文协议

ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网 ...

JavaScript AJAX stream 流式显示

当使用AJAX进行信息交互的时候,如果服务器返回的信息比较大,那么相对于传送完成之后的统一显示,流式显示就比较友好了. 流式实现 原理就是设置定时器,定时的查看AJAX对象的状态并更新内容,如果传 ...

poj 3667 Hotel (线段树)

http://poj.org/problem?id=3667 Hotel Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 94 ...

登陆整合实现-QQ互联认证(ASP.NET版本)

原文:登陆整合实现-QQ互联认证(ASP.NET版本) 首先 我们创建一个qq.ashx的页面,这个页面会跳转到QQ的请求界面 代码如下: QQSettingConfig qqSettingConfi ...

android studio 9.png 报错

Eclipse里能正常运行,但是导入到Android Studio里就报如下的错误 百度了下,说有两种解决办法一种是改后缀名,还有一种是重新在Android Studio里画一下点9图片.但是这个项目 ...

HEOI2018——welcome to NOI2018

我不得不和烈士和小丑走在同一道路上,  万人都要将火熄灭,  我一人独将此火高高举起,  我借此火得度一生的茫茫黑夜. ——海子 弹指一瞬间,翘首以盼的HEOI2018就来了. 我,一个滑稽的小丑,带 ...

Statement和PreparedStatement之间的区别

Statement和PreparedStatement之间的区别: 1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程2.使用 Statement ...

NodeJS学习笔记三

map map对象是一个简单的键/值映射.任何值(包括对象和原始值)都可以用作一个键或一个值. var m = new Map(); var o = {p: "Hello World&quo ...

java读取properties配置文件[转]

网上文章常见的几种读取.properties文件的方式 1.使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInp ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值