`
yiminghe
  • 浏览: 1453144 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Extjs Ajax 自动重连的增强

阅读更多

在 Ajax 操作中,自动重连应该是很常见的操作,比如:网络可能短期会慢,那么增加自动重练则会给用户更好的体验。而Extjs 的 Ajax 有很多配置项,偏偏没有 retryCount 这个 默认自动重练的次数,所以我把这个配置项加进去吧。



由于 Ext Ajax 操作最底层用的都是 Ext.lib.Ajax 所以我直接修改 Ext.lib.Ajax.request ,对 retryCount 进行特殊处理

 

 

 

 

 

直接修改 Ext.lib.Ajax.request:

 

/*
	v1.0(20090529) 直接修改底层lib ajax 实现自动重连
*/
(function(){
	//保存原来的调用代码
	var oldRequest=Ext.lib.Ajax.request;
	
	//新的增强代码
	Ext.lib.Ajax.request = function(method, uri, cb, data, options) {
		//没有配置就运行老代码
		if(!options.retryCount) 
			return oldRequest.call(Ext.lib.Ajax,method, uri, cb, data, options);
		
		//保存原来的失败处理函数
		var oldFailure=cb.failure;
	
		//添加了自动重连的新的处理函数
		cb.failure=function(responseObject){
			options.retryCount--;
			
			if(options.retryCount) {
				//注意:自动重连后tId 变化
				var newTransactionId = oldRequest.call(Ext.lib.Ajax,method, uri, cb, 
data, options);
				//调用重连回调函数
				if(options.retry) {
					options.retry.apply(cb.scope||window, [options.retryCount,
newTransactionId]);
				}
				
			}	
			//重连够了,调用真正的失败函数。
			else if(oldFailure){
				oldFailure.apply(cb.scope||window, [responseObject]);
			}
		}
		
		//增强配置,再运行老代码
		return oldRequest.call(Ext.lib.Ajax,method, uri, cb, data, options);
				
	}
	
})();
 


使用代码:

 

Ext.Ajax.request({
   url: 'foo.jsp',
   timeout:2,
   
   //重连次数
   retryCount:3,
   
   //重连后要注意保存新的 newTransactionId
   retry:function(retryCount,newTransactionId){
   	
   	alert('failture remain retry count :' + retryCount+'\n'
   	+'newTransactionId : '+newTransactionId.tId);
   },
   
   //最终的失败函数
   failure: function(responseObject){
  	alert('failture finally :'+responseObject.statusText);
   },
   headers: {
       'my-header': 'foo'
   },
   params: { foo: 'bar' }
});
  • 大小: 60.4 KB
  • 大小: 67.1 KB
分享到:
评论

相关推荐

    Ajax框架ExtJS3.0源代码

    2. **布局管理**:ExtJS3.0支持多种布局方式,如Fit布局、Border布局、Table布局等,能够根据容器大小自动调整子组件的大小和位置,适应不同屏幕尺寸和设备。 3. **数据绑定**:框架内建了数据绑定机制,允许将数据...

    ExtJS对Ajax的支持

    ### ExtJS对Ajax的支持 #### 一、Ext.Ajax入门 **Ext.Ajax**是ExtJS框架中的一个核心组件,用于实现与服务器的异步通信,即Ajax请求。这一功能对于构建动态、响应式和交互式的Web应用至关重要。Ext.Ajax提供了一套...

    ExtJs3.3中文API.CHM_extjs3.3中文文档_

    4. **Ajax支持**:通过Ext.Ajax对象,开发者可以轻松地进行异步请求,处理JSON或XML数据,实现页面的无刷新更新。 5. **图表组件**:ExtJS 3.3包含了丰富的图表组件,如柱状图、饼图、线图等,用于数据可视化。 6....

    ExtJs-3.2.0.rar

    数据绑定是ExtJS的一个强大特性,它允许组件与数据模型直接关联,当模型数据发生变化时,界面会自动更新,反之亦然。这种实时的数据同步大大简化了数据操作。 9. **AJAX支持** ExtJS内置了强大的AJAX功能,可以...

    EXTJS 3.03 zip下载

    4. **Ajax集成**:EXTJS 内置了Ajax通信机制,可以方便地与服务器端进行异步数据交换,支持JSON、XML等多种数据格式,简化了前后端交互。 5. **可扩展性**:EXTJS 3.0.3的设计使得开发者能够轻松创建自定义组件和...

    extjs3源文件下载

    6. **异步通信**:ExtJS支持AJAX和JSONP等技术进行异步数据交换,与服务器端进行无缝交互。 7. **布局管理**:框架提供了多种布局管理器,如Fit布局、FormLayout、TableLayout等,可以灵活控制组件在容器中的排列和...

    EXTJS实例 EXTJS树,可以编辑的EXTJS,EXTJS3.0

    1. **配置TreePanel**:首先,我们需要创建一个TreePanel实例,并为其配置必要的属性,如`rootVisible`(控制是否显示根节点)、`lines`(控制是否显示连接线)和`autoScroll`(是否自动滚动以显示全部内容)。...

    EXTJS3.0中文API (离线)

    6. **AJAX交互**:EXTJS内置了AJAX接口,使得与服务器端的异步通信变得容易。开发者可以使用Ajax请求获取或发送数据,而无需直接操作XMLHttpRequest对象。 7. **事件处理**:EXTJS的事件驱动模型允许开发者通过监听...

    Extjs3.0 cookbook

    7. **Ajax通信(Ajax Interactions)**:EXTJS内置的Ajax接口使得与服务器端的异步通信变得简单。 8. **拖放(Drag & Drop)**:EXTJS提供了完善的拖放支持,使得用户可以轻松实现元素的拖放操作。 **EXTJS 3.0...

    EXTJS + Struct +mysql +json

    EXTJS与Structs之间的通信通常通过AJAX请求完成,请求携带参数到服务器,Structs根据这些参数执行数据库查询,得到结果后,再将结果集封装成JSON对象返回给EXTJS。EXTJS接收到JSON数据后,可以解析并渲染到界面上,...

    ExtJS开发插件及Ext包

    - 从ExtJS 2.x到更现代的版本(如6.x和7.x),框架经历了显著的变化和增强,包括引入CMD(Command Line Interface)和Sencha CMD工具来自动化构建过程。 - CMD允许开发者用更模块化的方式组织代码,通过配置文件...

    extjs-3.4.0下载

    - **布局管理**:ExtJS的布局系统使得容器能够自动调整其子组件的大小和位置,以适应不同的屏幕尺寸和设备。 - **事件系统**:通过事件监听和处理,组件之间可以实现交互和通信。 - **Ajax支持**:内置的Ajax功能...

    EXTJS4.0.7下载

    EXTJS4.0.7是4.x系列的一个稳定版本,它在4.0的基础上进行了多项改进和增强,提供了更完善的API和性能优化。 首先,EXTJS4.0.7引入了全新的MVC(Model-View-Controller)架构,这是一种软件设计模式,用于分离应用...

    ExtJS与Struts2的整合工程实例

    整合ExtJS和Struts2的主要目的是利用ExtJS的前端能力增强用户界面,同时利用Struts2的后端处理能力和灵活性处理业务逻辑。具体整合步骤包括: 1. **配置Struts2**:在Struts2的配置文件(struts.xml)中定义Action,...

    最新extjs开发包

    4. **Ajax支持**:ExtJS内置了Ajax功能,通过使用XMLHttpRequest对象进行异步数据通信,实现页面无刷新更新,提高了用户体验。 5. **表单组件**:ExtJS提供了丰富的表单元素,包括文本框、复选框、单选按钮、下拉...

    extjs做界面的jsp系统

    - 结合Servlet和JSP,Struts可以接收前端ExtJS发送的Ajax请求,处理业务逻辑,并返回JSON或XML数据,更新前端界面。 3. **MySQL数据库**: - MySQL是一个关系型数据库管理系统,广泛应用于Web应用开发,具有高...

    搭建好的EXTJS和SSH环境

    3. **数据绑定**:EXTJS使用Model-View-Store模式,实现了数据与视图的自动同步,减少了手动更新界面的工作。 4. **Ajax通信**:EXTJS内置了Ajax通信机制,可以轻松地与服务器进行异步交互,获取或提交数据。 5. **...

    ExtJs Google Suggest 动态查询效果

    在本示例中,"ExtJs Google Suggest 动态查询效果" 是一个利用ExtJs实现的功能,它模仿了谷歌搜索框的自动建议功能。当你在搜索框中输入文字时,下拉列表会实时更新,显示与输入内容匹配的建议项。 首先,我们要...

    EXTJS 一个在线设计器,纯JS

    - **Ajax和数据网格(Ajax & Data Grid)**:EXTJS内置的Ajax支持和数据网格组件,可以实现与服务器的异步交互,显示和编辑大量数据。 - **主题和皮肤(Themes & Skins)**:EXTJS提供多种预设主题,设计师可以通过...

Global site tag (gtag.js) - Google Analytics