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

extjs ajax 的同步问题
我用的是Extjs2.0.2,我写好了一个从后台服务器获取数据的方法,只有当这个方法执行完之后下面的程序才能正确运行,但是我发现这个Ext.Ajax.request();方法是异步的啊,还没等一些值赋完,就往下走了,举个简单的例子

function getNewsFromServer(){
Ext.Ajax.request({     
url:'jsonTest.json',
success: function(resp,opts) {   
                                alert(JSON.stringify(serverJsonObject));
}
     });
}
getNewsFromServer();
alert("如何才让该条最后显示");

结果就是还没等getNewsFromServer方法执行完下面的程序就开始了,怎样才能使request变成同步的呢?不瞒大家说我,这个问题我从早晨到现在就一直没解决,奥对了你们千万别告诉我把下面的所有代码都放入success事件里面啊,因为我其他的地方还有调用这个方法的时候呢!求你们了!!!
extjs request??同步

------解决方案--------------------
 Ext.Ajax.request({  async : false, ....试试
------解决方案--------------------
 Ext.Ajax.request({  sync:true)

------解决方案--------------------
自己找下2.0.2的ext api看有没有设置为同步执行的,要不就放那些需要成功回调后的代码到回调函数中,最好是放回调中,同步执行会挂起代码执行,网速慢浏览器会假死,体验很差

function getNewsFromServer(){       
        Ext.Ajax.request({     
            url:'jsonTest.json',
            success: function(resp,opts) {                  
                                alert(JSON.stringify(serverJsonObject));  

//////////////////////
getNewsFromServer();
alert("如何才让该条最后显示");             
            }
         });
}
//getNewsFromServer();
//alert("如何才让该条最后显示");

------解决方案--------------------
http://blog.csdn.net/micro19890/article/details/8497752
在3.2中我使用了这个方法,希望可以帮到你。4.0.7中不可以使用,我在为这个版本的同步烦恼呢
------解决方案--------------------
var store = new Ext.data.Store({
                        pageSize: limit,
                        //autoLoad: true,
                        proxy: {
                            type: 'ajax',
                            url: 'queryAction!getData?startDate=' + startDate + '&endDate=' +&n