这个不大可能吧;“使用async : false,但Ext.LoadMask也显示出来
”相当于你现在的要求是回调函数和你调后台函数同步执行。

解决方案 »

  1.   

    楼主,你的代码可以不用async : false 和 Ext.LoadMask 这样个人觉得性能不高。它会创建Dom节点。
    比如可以改为这样。Ext.Msg.wait('正在提交数据……', '请稍候', {
    animate : true
    });
    Ext.Ajax.request({
    callback :fucntion(){
       Ext.Msg.hide();
       -- 自己的其他业务代码
    }
    -- 其他业务代码
    });
    不知楼主用的那个Ext的版本,据我所知Ext3.x和4.x中的Ajax都没有async配置
      

  2.   


    用的就是Ext4,async是可用的,同步请求已经成功了,因为我要在请求成功之后获取其结果值,再返回其结果,所以一定要async,不然返回结果不是请求成功后的结果的,完整代码如下function changeVersion(tree, newRecord, oldRecord){
    //debugger;
    var versionId = tree.getSelectionModel().getSelection()[0].get('nodeValue');
    var roleId = Ext.get("roleId").getValue();
    var changeMask = new Ext.LoadMask(Ext.getBody(), {
    msg    : "Changing, please wait..."
    });
    changeMask.show();
    var msgDiv = jQuery("#msgContent");
    var requestConfig = {
    url :'common/changeDatabase!changeDatabase.action',
    method: 'POST',
    params : {
    versionId: versionId,
    roleId: roleId,
    versionName: newRecord.get("text")
    },
    async : false,
    callback : function(options, success, response){
    changeMask.hide();
    changeMask.destroy();
    var changeDbResult = Ext.JSON.decode(response.responseText);
    if(changeDbResult && changeDbResult.result){
    if(changeDbResult.result == 'success'){
    msgDiv.attr("style", "color:green");
    msgDiv.html("Change version success");
    oldRecord = newRecord;
    } else {
    msgDiv.attr("style", "color:red");
    msgDiv.html("Change version failed");
    }
    // 切换版本消息框5秒后逐渐消失
    msgDiv.fadeOut(5000);
    }
    }
    }
    Ext.Ajax.request(requestConfig);
    return oldRecord;
    };
      

  3.   


    我要的就是同步执行的,同步的时候就是Ext.LoadMask显示不出来,想要的效果是请求前显示Ext.LoadMask,请求完成后,就隐藏,并且返回想要的结果值给其调用的方法,不同步的话,其结果不是请求后的结果哦
      

  4.   

    来来,我来教你,你只要把Ext.Ajax.request({});这一段放进Ext.getBody().mask("请稍候...");
    setTimeout(function () {
    Ext.Ajax.request({});
    },1000);
     Ext.getBody().unmask();
    这里面。原因的话可能就是在同步请求后页面不能交互了,遮罩层效果还没出来
      

  5.   

    当不使用async : false时,Ext.LoadMask在任一浏览器中显示效果,当加上async : false,Ext.LoadMask只在火狐中显示效果,其它浏览器不显示加载效果,请问,如何使用async : false,但Ext.LoadMask也显示出来