关于Ext AjaxRequest的问题

var rootNodeID;
Ext.Ajax.request({
            url : './organization.ered?reqCode=queryDeptinfoByDeptid',
            success : function(response) {
                var resultArray = Ext.util.JSON.decode(response.responseText);
                rootNodeID = resultArray.deptid;
                alert(rootNodeID);
            }
        });
alert(rootNodeID);      

如上,怎么第一次alert有值 第二次就没了啊~~~~~~~~~~~~~ 帮忙看看 呵呵

多谢了

ajax的A(asynchronous) 代表异步,也就是说js发起http请求后代码没有阻塞,下面的代码将立刻被执行,如果需要获取请求返回的数据必须配置callback回调函数(譬如上面的success属性就是一个回调函数),你下面的alert函数不再callback的函数里面,请求返回之前就被执行了,所以没值

[quote]如上,怎么第一次alert有值 第二次就没了啊~~~~~~~~~~~~~ 帮忙看看 呵呵 [/quote]
我下面说的第一次和第二次和你这里的描述不是一样的,你是指结果先后,并不能看出具体执行的是那个alert。

@chemzqm,
[code="javascript"]
var rootNodeID;
Ext.Ajax.request({
url : './organization.ered?reqCode=queryDeptinfoByDeptid',
success : function(response) {
var resultArray = Ext.util.JSON.decode(response.responseText);
rootNodeID = resultArray.deptid;
alert(rootNodeID);//第一次
}
});
alert(rootNodeID);//第二次
[/code]
如果按你说的,那么这里标注“第二次”的alert应该先执行,先显示undefined,而标注“第一次”的alert后执行,显示具体的deptid。但是,它现在已经显示了deptid(我猜想的,就是作者提到的[quote]第一次alert有值[/quote]),那么是不是ajax请求很快返回了呢,不然这个值哪里来的?如果回调都返回了,那全局变量rootNodeID应该也被赋值了,应该两次alert都显示相同的值才对呀?

如果他代码里面是那样写的,我敢肯定第一次alert出来的是undefined