2011-08-02 195 views
2

我有使用Ajax的问题​​。Extjs,返回Ajax返回值

function GetGrantAmazonItemCnt(){ 
    var cnt; 
    Ext.Ajax.request({ 
     url : '', 
     params : {}, 
     success :function(response){ 
      cnt = response.responseText; 
     } 
    }); 
    return cnt; 
} 

问题是,在得到ajax响应之前,它返回cnt。 所以它总是返回NULL。

有没有办法使右回传响应值?

谢谢你!

回答

6

由于AJAX请求是异步的,因此您的cnt变量将在请求返回并调用成功处理程序之前返回。

我建议你重构你的代码来解决这个问题。要做到这一点

一种方法是调用从您的AJAX请求的成功处理程序调用GetGrantAmazonItemCnt()取功能,这种方式传递价值,它需要的地方去:

function GetGrantAmazonItemCnt(){ 
    var cnt; 
    Ext.Ajax.request({ 
     url : '', 
     params : {}, 
     success :function(response){ 
      cnt = response.responseText; 
      FunctionThatCalledMe(cnt); 
     } 
    }); 
} 
+0

感谢您回复,我知道这是因为异步,但我有很多时候这个问题,所以我想知道在这种情况下如何专家... –

+0

看到我的编辑,我添加了一个方法来做到这一点的例子。 – hspain