2012-08-06 107 views
0

給下面的例子:jQuery的設置如何設置一個全局變量JSON後

var animal= null; 

$.post("ajax.php",{data: data}, function(output){ 
    animal = output.animal; 
},"json"); 

alert(animal); 

原則上我想要的變量返回AJAX功能的成功回調之外的東西,我宣佈它門柱外。但它仍然返回「null」。我究竟做錯了什麼?

+1

它是'異步'...使用回調函數 – 2012-08-06 19:22:20

回答

2

問題是警報命令成功函數之前執行,因爲$。員額是定義異步的。

做你想做什麼,你必須使用一個同步請求(之前請求是通過代碼將無法執行)是這樣的:

var animal = null; 

$.ajax({ 
     url: 'ajax.php', 
     async: false, // this is the important line that makes the request sincronous 
     type: 'post', 
     dataType: 'json', 
     success: function(output) { 
       animal = output.animal; 
      } 
     ); 

    alert(animal); 

祝你好運!

4

由於$.post()是異步的。所以你不能做你想做的事。取而代之的是,你必須使用回調函數,象下面這樣:

var animal= null; 

$.post("ajax.php",{data: data}, function(data){ 

    // this callback will execute after 
    // after finish the post with 
    // and get returned data from server 

    animal = data.animal; 
    callFunc(animal); 
},"json"); 

function callFunc(animal) { 
    alert(animal); 
}