问题描述
qualityStore = new Ext.data.Store({url: '../action/submitOrderController.zcjs?funcflg=getQuality&breedId='+breedId,reader: new Ext.data.XmlReader({record: 'Item',id: 'ItemId'}, ['id','name'])});qualityStore.on('load',AJAX_Loaded_qualityStore, this, true);qualityStore.load();alert("qualityStore.getCount(): "+qualityStore.getCount()); .................. ...............当store中的数据还没有取出来时,后面的代码已经执行了,所要每次alert的数据都是0,后面执行的操作也获取不了数据,怎么办? 问题补充:lizhi92574 写道
解决方案
ext-basex.js导入在ext-all.js后面。实在不行你通过store回调函数写吧。qualityStore.on('load',function(){ alert(qualityStore.getCount());}, this, true);
解决方案二:
3.0使用下载ext-basex.js实现同步qualityStore = new Ext.data.Store({ proxy:Ext.data.HttpProxy({ async: false,//设置同步 url: '../action/submitOrderController.zcjs?funcflg=getQuality&breedId='+breedId }), reader: new Ext.data.XmlReader({ record: 'Item', id: 'ItemId' }, [ 'id','name' ]) });
解决方案三:
你使用的是什么版本的是Ext.lib.Ajax.request出现错误吗?
解决方案四:
首先我上面代码加上用来设置ajax同步qualityStore = new Ext.data.Store({ proxy:Ext.data.HttpProxy({ sync : true,//设置同步url: '../action/submitOrderController.zcjs?funcflg=getQuality&breedId='+breedId}),reader: new Ext.data.XmlReader({ record: 'Item', id: 'ItemId' }, [ 'id','name' ]) }); qualityStore.on('load',AJAX_Loaded_qualityStore, this, true); qualityStore.load(); alert("qualityStore.getCount(): "+qualityStore.getCount());
解决方案五:
/******************************************************************************* * 设置Ext Ajax同步 ******************************************************************************/Ext.lib.Ajax.request = function(method, uri, cb, data, options) {if (options) {var hs = options.headers;if (hs) {for (var h in hs) {if (hs.hasOwnProperty(h)) {this.initHeader(h, hs[h], false);}}}if (options.xmlData) {if (!hs || !hs['Content-Type']) {this.initHeader('Content-Type', 'text/xml', false);}method = (method ? method : (options.method? options.method: 'POST'));data = options.xmlData;} else if (options.jsonData) {if (!hs || !hs['Content-Type']) {this.initHeader('Content-Type', 'application/json', false);}method = (method ? method : (options.method? options.method: 'POST'));data = typeof options.jsonData == 'object' ? Ext.encode(options.jsonData) : options.jsonData;}}return this["sync" in options ? "syncRequest" : "asyncRequest"](method,uri, cb, data);}Ext.lib.Ajax.syncRequest = function(method, uri, callback, postData) {var o = this.getConnectionObject();if (!o) {return null;} else {o.conn.open(method, uri, false);if (this.useDefaultXhrHeader) {if (!this.defaultHeaders['X-Requested-With']) {this.initHeader('X-Requested-With', this.defaultXhrHeader,true);}}if (postData && this.useDefaultHeader&& (!this.hasHeaders || !this.headers['Content-Type'])) {this.initHeader('Content-Type', this.defaultPostHeader);}if (this.hasDefaultHeaders || this.hasHeaders) {this.setHeader(o);}o.conn.send(postData || null);this.handleTransactionResponse(o, callback);return o;}}
解决方案六:
通过 store 回调函数同步。或者让store使用同步数据加载。如果是3.0以下需要加ajax同步代码。new Ext.data.JsonStore({proxy:Ext.data.HttpProxy({ sync : true }) })