2013-03-23 66 views
2
$(document).ready(function() { 
      $.ajax({ 
       url: 'objects.php', 
       type:'GET', 
       dataType: 'json', 
       success: function(response) 
       var variable = [some_array]; 

     //how to create an variable containing json array and access this variable outside? 
       } 
      }); 
     }); alert(variable); 

爲什麼這不起作用?我聞到一些範圍問題...Javascript:如何在ajax「成功」函數中創建變量?

謝謝。

+2

Ajax是異步的。在回調中或在回調所調用的函數中使用變量。 – 2013-03-23 11:40:12

+0

由於dystroy已經陳述過,ajax調用之後的代碼(在你的情況下是alert)立即執行,而成功只有在被應答後才被調用。因此,您無法在成功之外使用這些變量。一個解決方法是例如定義一個全局函數,它把你的變量作爲一個參數,這個參數將在成功的時候被調用。 – Appleshell 2013-03-23 11:46:52

回答

0

首先,讓我說,改變一個回調內的全局變量是不是要走的路。您應該從回調中引發所有副作用。如果避免通過全局狀態相互影響的回調,您會發現代碼是lot更易於推理和調試。這就是說,如果你想要兩個函數「共享」一個變量,只需在外部都可以看到它的地方聲明它。

var x = 0; // Declaring this in an outer scope makes f1 and f2 share it. 

function f1() { 
    x = 1 
} 

function f2() { 
    console.log(x) 
} 

f1(); 
f2(); // Prints '1' 

負責此行爲的功能是closures

相關問題