2012-11-14 40 views

回答

0

taox答案是正確的,但我會解釋爲什麼它不工作。

確保您正在訪問的變量請求已作出後。請注意,請求是異步的。

var value; 
Ext.Ajax.request({ 
    url: 'a/b/c', 
    success: function(response){ 
      var result = Ext.decode(response.responseText); 
      if((result.a)==1){ 
      value = result.a; 
      } 
    }, 
    callback: function(opt, succes, response){ 
     console.log(value); //value is now set 
    } 
}); 
console.log(value); //value isn't set 

編輯:

要使全局變量在Javascript:

<script type="text/javascript"> 
    var myValue = 'A1rPun'; //define variable 
    function getValue() 
    { 
     console.log(myValue) //outputs "A1rPun" 
     console.log(window.myValue) //outputs "A1rPun" (window is the topmost parent AKA global scope) 
    } 
</script> 
+1

你可以用'異步:FALSE',但你在做電話... –

+0

我看到的應用程序將凍結。但「價值」只能在「Ext.Ajax.request」中使用。它仍然不是全球變數。 –

+0

已更新的答案。如果我回答了你的問題,請接受它。 – A1rPun

0

我想你可以聲明作爲一個全局變量,然後在你的成功的功能分配result.a它。

var value; 
    Ext.Ajax.request({ 
    url: 'a/b/c', 
    success: function(response) 
    { 
      var result = Ext.decode(response.responseText); 
      if((result.a)==1)        
      { 
      value = result.a; 
      } 

    } 
    }); 
+0

我嘗試申報價值。但它仍然沒有定義。 –

+1

是的,'A1rPun'指出你的請求是asyc,所以它仍然是未定義的。 – taox