日期:2014-05-16  浏览次数:22875 次

通过extjs.ajax.request()返回值不能赋值给变量 - Web 开发 / Ajax
就是我用extjs.ajax.request()从后台得到一个值,要赋值给var userName 

现在是在下面的代码中 这个userName没有值 

代码:
JScript code
var userName='';
Ext.Ajax.request({
            url:"index.do?action=getUserName",
            method:'POST',
             success: function(response,action){
                                         userName=    Ext.util.JSON.decode(response.responseText).data.msg;
//这里的userName已经有值
                                             },
             failure: function(response,options){
                                    RS.failueDeal();
            }
        });
    Ext.Msg.alert('信息2',userName);//这里userName没有值 


------解决方案--------------------
Ext.Ajax 是异步的吧?等 request 返回以后再观察 userName 的值。
------解决方案--------------------
Ext.Ajax.request是异步的,要在success里面才能活的返回的值,也就是说Ext.Msg.alert('信息2',userName)要放在success里面
------解决方案--------------------
执行 Ext.Msg.alert('信息2',userName); 的时候
还没有执行 userName = Ext.util.JSON.decode(response.responseText).data.msg;

chang to


userName = Ext.util.JSON.decode(response.responseText).data.msg;
Ext.Msg.alert('信息2',userName);
------解决方案--------------------
JScript code
usserName='';  //不要用var声明全局变量
Ext.Ajax.request({
            url:"index.do?action=getUserName",
            method:'POST',
             success: function(response,action){
                                         userName=    Ext.util.JSON.decode(response.responseText).data.msg;

                                         //    Ext.Msg.alert('信息',name); 
                                         //    return name;
                                             },
             failure: function(response,options){
                                    RS.failueDeal();
            },
            scope:this
        });
    Ext.Msg.alert('信息2',userName); //这里得不到值