急:store异步取值问题

问题描述

有一个store的load事件中,调用了另外一个store的load事件所查询出来的值。但是由于异步的问题,取不到值(红字部分)。望大家指点,应该怎么改。先谢过!//根据设备类型编号,取得设备类型名称 function getEquipmentTypeName(bh){ var resultName; //连接后台数据 var dataToText = new Ext.data.Store({ url: '../equipmentManage/equipmentPath.aspx', baseParams: {module: 'getEquipmentTypeName',tx:bh}, reader: new Ext.data.XmlReader( {record: 'Table', id: 'success'}, ['WZFL003'] ), listeners: { "load": function() { //遍历数据 if (dataToText.getAt(0).id == 'true') { resultName= dataToText.getAt(0).data['WZFL003']; }else{ resultName = ""; } } } }); //加载数据 dataToText.load(); return resultName; } //根据物资名称,查询出物资类型路径 function searchData(mc){ var bh; var f1; var f2; //连接后台数据 var dataToText = new Ext.data.Store({ url: '../BackGroundData.aspx', baseParams: {module: 'getEquipmentPath',tx:mc}, reader: new Ext.data.XmlReader( {record: 'Table', id: 'success'}, ['WZFL001','WZFL003'] ), listeners: { "load": function() { //遍历数据 if (dataToText.getAt(0).id == 'true') { bh = dataToText.getAt(0).data['WZFL001']; f1 = getEquipmentTypeName(bh.substr(0,2)); alert(f1); f2 = getEquipmentTypeName(bh.substr(0,7)); alert(f2); Ext.getCmp("lblPath").setText("(00"+dataToText.getAt(0).data['WZFL001'].substr(0,2)+")"+ f1 + "->" + f2 + "->" +dataToText.getAt(0).data['WZFL003']); }else{ Ext.MessageBox.alert('查询提示','该物品不存在!'); Ext.getCmp("lblPath").setText(""); } } } }); //加载数据 dataToText.load(); }

解决方案

这里我提供一个我个人的思路,项目中已经使用了。 var dataToText = new Ext.data.Store({ url: '../equipmentManage/equipmentPath.aspx', baseParams: {module: 'getEquipmentTypeName',tx:bh}, reader: new Ext.data.XmlReader( {record: 'Table', id: 'success'}, ['WZFL003'] ), listeners: { "load": function() { //遍历数据 if (dataToText.getAt(0).id == 'true') { resultName= dataToText.getAt(0).data['WZFL003']; }else{ resultName = ""; } } } }); 你这里其实就是从服务端取出数据,那这里个人觉得你可以改造下,把从服务端返回的数据放入同步的Ext.Ajax请求中,把返回的xml数据解析成一个Array,把Ext.data.XmlReader改造成本地的Ext.data.ArrayReader进行加载,后面的代码也不用变。这样子即可。不过Ext从在2.X(准确版本忘记了)开始只支持异步加载数据,你可以使用第三方的扩展来解决.//搜索下Ext.Ajax 同步,就可以找到google code上的一个支持同步Ajax Request扩展连接http://code.google.com/p/ext-basex/改造后的代码片段大概如下:1、Ext.Ajax 同步请求数据2、Ext.data.ArrayReader组装数据3、你后面的代满

时间: 2024-11-02 12:40:31

急:store异步取值问题的相关文章

Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值_jquery

首先来看工程结构图: 项目所需要的包,如下所示: JSP代码: <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServe

ExtJS的.NET控件----YuiGrid(数据绑定、同步/异步取值)

YuiGrid是ExtJs的.NET控件,其功能类似标准的GridView控件,又各有所长,本文将简单的介绍下ExtJS的.NET控件中的YuiGrid控件的一些常用功能和实现. 一.数据准备 建立数据(MSSQL 2005),字段如下图所示: 二.效果预览 YuiGrid的界面呈现的效果如下图: 我们还可以点击列进行排序以及动态指定需要显示的列,如下图示:

异步回调-ajax 取值取不到,求帮助

问题描述 ajax 取值取不到,求帮助 function ChangePage(page) { var onPage = document.getElementById(""lblOnPage"").innerText;//当前页 var url=""show.aspx/"" ; if(page==0)// 点击的是上一页 { if (onPage == 1) { //第一页的时候提示 alert(""已经

extjs-Ext store与combox的取值问题

问题描述 Ext store与combox的取值问题 var compStore =new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url:pathurl+'/transRuleAction!getAllCompany', timeout:60000 }), reader: new Ext.data.JsonReader({ root: "root", fields: [{ name: "comp_code"

jsp页面获取session值,第一次取值为空,必须要重新刷新页面,才能取到,求高手指点,急!!!

问题描述 action里面打印有值,但是在jsp页面取值却没有,debug也显示是空的,非要刷新一次才能取到​ 解决方案 解决方案二:.....没看懂,估计不是你贴出来的原因解决方案三:增加一行刷新缓冲区的代码试试解决方案四:jsp页面在加载的时候会编译成servlet,而servlet则会展示给我们想要的页面,这个编译过程会把标签,el语句等等也编译,这个时候只是页面的加载,这个时候还没有访问你的action,所以在session中的action_name是空,等页面加载完成后会访问ajax,

实用ExtJS教程100例-011:ExtJS Form 使用JSON数据赋值和取值

上一节中我们演示了ExtJS Form的异步加载和提交数据,本节中我们将演示如何使用JSON数据为ExtJS Form中的字段赋值和取值. 系列ExtJS教程持续更新中,点击查看>>最新ExtJS教程目录 使用JSON数据为字段赋值 var formCmp = this.up("form"); var form = formCmp.getForm(); var userValues = { UserName: "Qi Fei", Email: "

javascript,each在Post后,取值取不到

问题描述 javascript,each在Post后,取值取不到 $("#div_t td").each(function () { //alert($(this).text()); $.post("/Home/GetDate", { ID: $("#Name").combobox('getValue'), Date: $(this).text() }, function (data) { if (data.item != null) { ale

hashmap-MapList 取值问题————求大神

问题描述 MapList 取值问题----求大神 table之前是个HashMap MapList col = (MapList)Table.get("colums"); 打印出来是 col:{X=X,X=X,X=X 等等好长的} 我怎么把col 遍历出来呢.试了好多遍 急 解决方案 我要把里面 name=X的值取出来 解决方案二: 按键值对取不可以吗?map.get("x"); 解决方案三: 怎么写呢.我要里面name=的东西 解决方案四: 可以把代码贴的完整一点

同一个页面多个FCK怎么样取值

问题描述 同一个页面放多个FCK怎么样取值.用FCKeditorAPI.GetInstance(instanceName).GetXHTML(true);每次取到的都是最后一个FCK的值.代码如下:急.<textarea name="answerList" style="display:none" cols="60" rows="2">var fck = new FCKeditor("answerList