`

Ext Ajax请求队列

阅读更多
最近在做一个系统时,在删除记录时要求能清楚看到删除的进度,把ajax写在一个循环中,看到一个现象,在Firefox中,可以看到删除的进度,可是在IE,Chrome中不能看到进度,即删除十条记录里,直能看到最后一条的进度,编写了这个ajax请求除列组件,解决了这个情况;有什么不足的地方欢迎指出,谢谢大家。
/**
 * Ajax请求队列
 * @usage var queue = new Ext.util.AjaxQueue({
 * 			  scope : this,
 * 			  listeners : {
 * 			      'beforequeue' : function(AjaxQueue){},
 * 			      'executequeue' : function(){},
 *                'afterqueue' : function(){}
 * 			  }	  
 * 	
 * 		  });
 * 		  queue.add({
 * 		  	  url : 'XXX',
 * 			  success : function(){
 * 
 *            }
 *            ....
 *        })
 *        queue.run();
 */
Ext.util.AjaxQueue = function(cfg){
	this.items = [];
	this.nowIndex = 0;
	this.ajaxCount = 0;
	
	this.addEvents(
		//队列开始执行前事件,若事件返回false,则终止执行队列
		'beforequeue',
		//当整个队列被执行完毕后的事件,true执行成功,false执行失败
		'afterqueue',
		//任意一个队列执行完后的事件
		'executequeue'
	);
	
	this.listeners = cfg.listeners;
	
    Ext.util.AjaxQueue.superclass.constructor.call(this);
};

Ext.extend(Ext.util.AjaxQueue,Ext.util.Observable,{
	
	//添加Ajax请求到队列中
	add : function(params){
		this.items.push(params);
		this.ajaxCount++;
	},
	
	//执行队列
	run : function(){
		//当触发beforequeue事件返回false时,终止队列的执行
		if(this.fireEvent("beforequeue", this) === false){
			return;
		}
		this.doExecute(this.items[this.nowIndex], this.doCallBack, this.nowIndex,this);
	},
	
	doExecute : function(jsonObj,callback,nowIndex,ajaxQueue){
		var sucHandler = jsonObj.success;
		var faiHandler = jsonObj.failure;
		var ajaxOptions = {
			success : function(response,options) {
				sucHandler(response,jsonObj.params);
				callback(ajaxQueue);
			},
			failure : function() {
				faiHandler.call();
				callback(ajaxQueue);
			}
		};
		Ext.apply(jsonObj, ajaxOptions);

		return Ext.Ajax.request(jsonObj);
	},
	
	doCallBack : function(ajaxQueue){
		//当执行到这里后说明一个请求已被执行,这里触发执行队列里一个请求的事件
		ajaxQueue.fireEvent('executequeue',jsonObj,ajaxQueue.nowIndex);
		ajaxQueue.nowIndex++;
		if(ajaxQueue.nowIndex >= ajaxQueue.ajaxCount) {
			ajaxQueue.fireEvent("afterqueue",ajaxQueue);
			ajaxQueue.callback.call(ajaxQueue.scope || ajaxQueue);
			return;
		}
		var jsonObj = ajaxQueue.items[ajaxQueue.nowIndex];
		ajaxQueue.doExecute(jsonObj,ajaxQueue.doCallBack, ajaxQueue.nowIndex,ajaxQueue);
	},
	
	callback : Ext.emptyFn
});
  • 大小: 64.4 KB
分享到:
评论
2 楼 jn_nian 2012-07-24  
shine22fmf 写道
看不懂啊看不懂!

就是当发送一个ajax请求后,在回调函数中再继续进行下一个ajax进求,如此下去,直到队列中所有的请求都发送完
1 楼 shine22fmf 2012-07-24  
看不懂啊看不懂!

相关推荐

    extjs对ajax的支持文档

    - Ext.Ajax也支持批量请求管理和队列控制,允许开发者组织和顺序执行多个Ajax请求。 8. **预处理和后处理**: - `beforeSend`: 在发送请求前执行的函数,可以取消请求。 - `loadFn`和`unloadFn`: 对于资源加载和...

    ext+hibernate+spring 入库的实例

    2. 配置Spring:设置Spring MVC,创建对应的Controller来处理EXT的Ajax请求。Spring的DispatcherServlet会接收请求并转发给相应的Controller。 3. 集成Hibernate:在Spring中配置Hibernate的数据源、SessionFactory...

    一些ExtJS的Demo

    `Ext.data.Store`是ExtJS用来管理数据集的组件,它可以与各种数据源进行交互,包括AJAX请求、本地数组或者直接绑定到模型实例。Store负责加载、缓存和更新数据,为Grid、TreePanel等组件提供数据源。 这些Demo可能...

    ext 文件上传

    7. **服务器端交互**:如何配置上传的URL,以及与后端服务器进行通信,如使用Ajax请求或iFrame模拟表单提交。 8. **错误处理**:处理文件大小限制、文件类型限制以及网络中断等问题的方法。 9. **用户体验**:如何...

    upload_Ext实现上传功能

    `upload_Ext` 可能允许用户一次选择多个文件进行上传,这需要对文件队列进行管理,并依次处理每个文件。 9. **安全考虑**:在实现文件上传时,安全性是非常重要的一环。防止恶意文件上传、限制文件大小和类型、确保...

    ext-dwr-spring集成Demo

    在"ext-dwr-spring集成Demo"中,EXT负责前端的用户交互和界面展示,DWR作为中间层,处理Ajax通信,使前后端能够实时交换数据。Spring框架则作为后端的核心,管理应用的业务逻辑和数据访问。这种集成方式的优势在于,...

    ExtJS Web应用程序开发指南

    1. **Ext.Ajax对象**:它是ExtJS中的核心Ajax接口,提供了发送Ajax请求的所有方法,如`request()`,`getJSON()`,`getScript()`等。 2. **配置选项**:在使用Ajax请求时,你可以通过配置对象设置多种参数,如URL、...

    ExtJS 多文件上传 UploadDialog For ExtJS3.x

    - **AJAX请求**:通过Ajax发送异步请求到服务器端,处理文件上传过程中的各种逻辑。 - **事件监听**:监听文件选择事件、上传开始/结束事件等,以便实时更新UI状态。 **3. 事件队列(EventQueue)的设计** `Ext.ux....

    ExtJS 编写的批量上传(java实现)

    与Java后端的交互通常是通过Ajax方式进行的,使用`Ext.Ajax.request`方法发送HTTP请求,将文件数据作为FormData对象的一部分提交。Java端,通常会有一个接收文件的Controller,比如使用Spring MVC的`@RequestParam`...

    Extjs4后台框架、多文件上传

    8. **AJAX和JSON**:数据的传输通常采用AJAX异步请求,返回的结果可能是JSON格式,方便前后端交互。 9. **CSS和布局**:为了提供良好的用户体验,可能会自定义样式和布局,使得文件选择和上传过程更加友好。 10. *...

    KODExplorer 芒果云-资源管理器

    - 拖动url——创建ext app - 文件管理,树目录变化后(增删改)自动同步到文件列表 - 文件管理,文件列表变化后(增删改)自动同步到树目录 - 中文用户名限制 - 对话框打开关闭动画 - 其他多处优化 ####fix ...

Global site tag (gtag.js) - Google Analytics