2011-08-02 21 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

関連する問題