`
feidaozhou
  • 浏览: 14124 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

为ExtJS添加超时跳转

阅读更多
这篇文章大部分内容是从其他地方看到的,只是自己添加了些内容。

对于普通的http请求,可以通过拦截器判断session超时,然后跳转到登录页面;但是对于Ajax请求,则不会如期待的那样自动转到登录页面,若想实现,必须特殊处理。
不论是普通http请求还是ajax请求,都可以通过拦截器来将请求捕获,而且区分这两种请求在于头部信息的不同:普通http请求的header参数中没有x-requested-with:XMLHttpRequest头信息,而异步的有。

个人呢认为Ext的Ajax请求分为这么几种,Ext.Ajax类、Ext.data.Connection类、Ext.data.HttpProxy类,其中Ext.Ajax类是对Ext.data.Connection类封装的单一实例,Ext.data.HttpProxy内部引用的还是Ext.Ajax类,所以我们需要为Ext.data.Connection类设置统一的超时处理。

我在Ext.data.Connection的源码中直接为其添加个监听,让它在发生异常时实现跳转
listeners:{
	'requestcomplete':{
		fn:function(conn,response,options){
			 if(response.getResponseHeader.sessionstatus){ 
	        window.location.href='error.jsp';  
	    } 
		}
	}
},	


Action中拦截器的处理和原来几乎一样,只是在超时的处理上添加一个分支
if (request.getHeader("x-requested-with") != null
		&& request.getHeader("x-requested-with").equalsIgnoreCase(//ajax超时处理
				"XMLHttpRequest")) {
	response.addHeader("sessionstatus", "timeout");
}else{//http超时的处理
}
分享到:
评论
1 楼 AnDong 2010-04-02  
这个判断逻辑有问题,当遇到文件上传表单时,Ext是不会添加该header信息的,不知道是不是Ext的一个bug。

相关推荐

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

    如果检测到这是一个AJAX请求,过滤器会在响应头中添加一个自定义字段`sessionstatus`,并将值设为"timeout"。对于非AJAX请求,直接重定向到指定的登录页(例如`/test/index.jsp`)。 接下来,在客户端,我们需要...

    extjs实现登陆验证

    3. **表单验证与提交**:在`subjectForm`函数中,使用`myform.getForm().isValid()`检查表单是否有效,如果有效,则通过`form.submit()`方法提交表单数据,设置等待消息、超时时间、成功和失败回调。成功回调会根据...

    Extjs 4.1 (MVC) 如何动态加载控制层以及session 过期该如何处理

    在这种情况下,我们可以添加一个自定义的响应头`sessionstatus`,并设置其值为"timeout"。同时,返回一个JSON对象,包含错误信息和重定向URL,如下所示: ```javascript if (findHtml ) { response.addHeader(...

    Session过期后自动跳转到登录页面的实例代码

    然而,Session不能永久保持,它有默认的超时时间,超过这个时间如果没有接收到客户端的任何请求,Session就会被视为过期。在本文中,我们将探讨如何在Session过期后自动将用户重定向到登录页面。 首先,开发者可能...

    ext session失效 页面跳转

    当客户端的浏览器关闭或者Session超时时,Session将被视为失效。 当EXT应用检测到Session失效,它需要与后端服务器进行通信,确认Session状态。这通常是通过Ajax请求完成的。如果后端返回的响应表明Session已过期,...

    解决Extjs4中form表单提交后无法进入success函数问题

    如果服务器端没有正确返回包含有success: true的json对象,那么即使服务器处理了表单提交的数据,Extjs4的回调机制也不会触发success函数,而可能会跳转到error回调函数中去,甚至可能出现回调函数都不执行的情况。...

    UniGUI集合说明

    - **添加页面**:为PageControl添加多个子页面。 - **切换页面**:通过编程逻辑实现在各个页面间的切换。 #### 43. UniGUITreeView处理 `UniGUITreeView`的处理主要包括构建树形结构、绑定数据源以及实现节点的...

Global site tag (gtag.js) - Google Analytics