在 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
分享到:
相关推荐
2. **布局管理**:ExtJS3.0支持多种布局方式,如Fit布局、Border布局、Table布局等,能够根据容器大小自动调整子组件的大小和位置,适应不同屏幕尺寸和设备。 3. **数据绑定**:框架内建了数据绑定机制,允许将数据...
### ExtJS对Ajax的支持 #### 一、Ext.Ajax入门 **Ext.Ajax**是ExtJS框架中的一个核心组件,用于实现与服务器的异步通信,即Ajax请求。这一功能对于构建动态、响应式和交互式的Web应用至关重要。Ext.Ajax提供了一套...
4. **Ajax支持**:通过Ext.Ajax对象,开发者可以轻松地进行异步请求,处理JSON或XML数据,实现页面的无刷新更新。 5. **图表组件**:ExtJS 3.3包含了丰富的图表组件,如柱状图、饼图、线图等,用于数据可视化。 6....
数据绑定是ExtJS的一个强大特性,它允许组件与数据模型直接关联,当模型数据发生变化时,界面会自动更新,反之亦然。这种实时的数据同步大大简化了数据操作。 9. **AJAX支持** ExtJS内置了强大的AJAX功能,可以...
4. **Ajax集成**:EXTJS 内置了Ajax通信机制,可以方便地与服务器端进行异步数据交换,支持JSON、XML等多种数据格式,简化了前后端交互。 5. **可扩展性**:EXTJS 3.0.3的设计使得开发者能够轻松创建自定义组件和...
6. **异步通信**:ExtJS支持AJAX和JSONP等技术进行异步数据交换,与服务器端进行无缝交互。 7. **布局管理**:框架提供了多种布局管理器,如Fit布局、FormLayout、TableLayout等,可以灵活控制组件在容器中的排列和...
1. **配置TreePanel**:首先,我们需要创建一个TreePanel实例,并为其配置必要的属性,如`rootVisible`(控制是否显示根节点)、`lines`(控制是否显示连接线)和`autoScroll`(是否自动滚动以显示全部内容)。...
6. **AJAX交互**:EXTJS内置了AJAX接口,使得与服务器端的异步通信变得容易。开发者可以使用Ajax请求获取或发送数据,而无需直接操作XMLHttpRequest对象。 7. **事件处理**:EXTJS的事件驱动模型允许开发者通过监听...
7. **Ajax通信(Ajax Interactions)**:EXTJS内置的Ajax接口使得与服务器端的异步通信变得简单。 8. **拖放(Drag & Drop)**:EXTJS提供了完善的拖放支持,使得用户可以轻松实现元素的拖放操作。 **EXTJS 3.0...
EXTJS与Structs之间的通信通常通过AJAX请求完成,请求携带参数到服务器,Structs根据这些参数执行数据库查询,得到结果后,再将结果集封装成JSON对象返回给EXTJS。EXTJS接收到JSON数据后,可以解析并渲染到界面上,...
- 从ExtJS 2.x到更现代的版本(如6.x和7.x),框架经历了显著的变化和增强,包括引入CMD(Command Line Interface)和Sencha CMD工具来自动化构建过程。 - CMD允许开发者用更模块化的方式组织代码,通过配置文件...
- **布局管理**:ExtJS的布局系统使得容器能够自动调整其子组件的大小和位置,以适应不同的屏幕尺寸和设备。 - **事件系统**:通过事件监听和处理,组件之间可以实现交互和通信。 - **Ajax支持**:内置的Ajax功能...
EXTJS4.0.7是4.x系列的一个稳定版本,它在4.0的基础上进行了多项改进和增强,提供了更完善的API和性能优化。 首先,EXTJS4.0.7引入了全新的MVC(Model-View-Controller)架构,这是一种软件设计模式,用于分离应用...
整合ExtJS和Struts2的主要目的是利用ExtJS的前端能力增强用户界面,同时利用Struts2的后端处理能力和灵活性处理业务逻辑。具体整合步骤包括: 1. **配置Struts2**:在Struts2的配置文件(struts.xml)中定义Action,...
4. **Ajax支持**:ExtJS内置了Ajax功能,通过使用XMLHttpRequest对象进行异步数据通信,实现页面无刷新更新,提高了用户体验。 5. **表单组件**:ExtJS提供了丰富的表单元素,包括文本框、复选框、单选按钮、下拉...
- 结合Servlet和JSP,Struts可以接收前端ExtJS发送的Ajax请求,处理业务逻辑,并返回JSON或XML数据,更新前端界面。 3. **MySQL数据库**: - MySQL是一个关系型数据库管理系统,广泛应用于Web应用开发,具有高...
3. **数据绑定**:EXTJS使用Model-View-Store模式,实现了数据与视图的自动同步,减少了手动更新界面的工作。 4. **Ajax通信**:EXTJS内置了Ajax通信机制,可以轻松地与服务器进行异步交互,获取或提交数据。 5. **...
在本示例中,"ExtJs Google Suggest 动态查询效果" 是一个利用ExtJs实现的功能,它模仿了谷歌搜索框的自动建议功能。当你在搜索框中输入文字时,下拉列表会实时更新,显示与输入内容匹配的建议项。 首先,我们要...
- **Ajax和数据网格(Ajax & Data Grid)**:EXTJS内置的Ajax支持和数据网格组件,可以实现与服务器的异步交互,显示和编辑大量数据。 - **主题和皮肤(Themes & Skins)**:EXTJS提供多种预设主题,设计师可以通过...