2012-11-14 41 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