Ajax请求session过期解决方法
ajax和正常浏览器请求要分开处理, 正常浏览器请求直接在服务器端用重定向即可, ajax请求可在服务端设置一个状态, 如Forbidden, 然后在Extjs中的ajax请求异常处理中进行重定向即可.
服务器端代码示例:
Java代码 复制代码
1. if (httpRequest.getHeader("x-requested-with") != null && httpRequest.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {
2. if (sessionUser == null) {
3. httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);
4. } else {
5. chain.doFilter(httpRequest, httpResponse);
6. }
7. } else {
8. if (sessionUser != null) {
9. chain.doFilter(httpRequest, httpResponse);
10. } else {
11. String path = httpRequest.getContextPath();
12. httpResponse.sendRedirect(path + "/dm/login.jsp");
13. }
14. }
if (httpRequest.getHeader("x-requested-with") != null && httpRequest.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {
if (sessionUser == null) {
httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);
} else {
chain.doFilter(httpRequest, httpResponse);
}
} else {
if (sessionUser != null) {
chain.doFilter(httpRequest, httpResponse);
} else {
String path = httpRequest.getContextPath();
httpResponse.sendRedirect(path + "/dm/login.jsp");
}
}
Extjs中Ajax请求处理
init: function() {
//你原来的代码下面添加全局Ajax异常处理
Ext.Ajax.on('requestexception', (你的ajax异常处理函数));
},
异常处理函数如:
function(conn, response, options) {
if (response.statusText == 'Forbidden') {
window.location = '../index.jsp'; //你要做的操作, 如重定向到登陆页面
} else {
displayMessage("Oops: " + response.statusText
+ ", please reload this page and try again");
}
};
而我的程序是Jquery,关于jquery的异步提交方法介绍如下:
转自:http://www.cnblogs.com/yeer/archive/2009/07/23/1529460.html
jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯。
废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到).
1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中。
url (String) : 请求的HTML页的URL地址。
data (Map) : (可选参数) 发送至服务器的 key/value 数据。
callback (Callback) : (可选参数) 请求完成时(不需要是success的)的回调函数。
这个方法默认使用 GET 方式来传递的,如果[data]参数有传递数据进去,就会自动转换为POST方式的。jQuery 1.2 中,可以指定选择符,来筛选载入的 HTML 文档,DOM 中将仅插入筛选出的 HTML 代码。语法形如 "url #some > selector"。
这个方法可以很方便的动态加载一些HTML文件,例如表单。
示例代码:
$(".ajax.load").load("http://www.cnblogs.com/yeer/archive/2009/06/10/1500682.html .post",<