2011-05-26 160 views
0

我需要將ajax響應分配給全局變量,以便我可以在我的應用程序中使用它。顯而易見的問題是ajax請求異步,從而使事情變得複雜。extjs返回ajax響應

我試圖在ajax調用之前初始化一個對象,然後在成功內部分配響應fron,但是這也不起作用。

任何想法?

示例代碼

var p = {}; 
loadLang('en'); 

function loadLang(code) { 

    Ext.Ajax.request({ 
     url : '/LoadLanguage.html', 
     method : 'POST', 
     params :{'code':code}, 
     timeout : 250, 
     success : function(response, opts) { 
     obj = Ext.decode(response.responseText); 
     p = obj; 
     }, 
     callback : function(o,s,r) 
     { 
     } 
    }); 
} 
+1

*我已經嘗試了Ajax調用前初始化一個對象,然後分配*您是怎麼做到這一點?因爲我已經嘗試了你的步驟,它的工作原理..編輯你的問題與您當前的代碼 – 2011-05-26 10:54:12

+0

是的,你的問題是完全不清楚沒有代碼。 – sra 2011-05-26 11:06:32

回答

0
var myValue={item:"pie"}; 

Ext.Ajax.request({ 
     url: 'test.php', 
     params: { 
      id: 1 
     }, 
     success: function(response){ 
      alert(response); 
      window.myValue.response=response; //yay for global scope. 
          console.log(window.myValue);//This has to be here, 
          //else it gets logged before the call gets completed. 
     } 
    });  
+0

假設在ajax調用之前我做了var SomeVal = {} ;.如果我做了一個console.log(SomeVal)ajax調用後,我仍然有一個空的對象。 – mbouclas 2011-05-26 12:31:43

+0

將其定義爲var SomeVal使其成爲本地。 SomeVal = {}; http://www.w3schools.com/js/js_variables.asp – Alex 2011-05-26 12:35:07

+0

哎呀,這個評論有點不正確,因爲它仍然被聲明爲全局範圍的本地。看到我編輯的答案 – Alex 2011-05-26 12:40:07