2017-09-26 6 views
-5

私はすでにSurprised that global variable has undefined value in JavaScriptを読んでいます。JavaScriptグローバルバリエールは定義されていません

しかし、私の問題は、私は内部の同じvarible名前を作成していないので、異なる..です

$(document).ready(function() { 
    var all_ap; 
    var url = "http://localhost/example/php-code/json.php"; 
    $.getJSON(url, function(result) { 
     all_ap = result; 
     console.log(result); 
    }); 
    console.log(all_ap); 
}); 

これらはコンソール結果です。

undefined 
(6) [{…}, {…}, {…}, {…}, {…}, {…}] 

上記の結果によればconsole.log(result);console.log(all_ap);作品のように思えます。

なぜですか? all_apバリバリ作品はどうすればいいですか?

+0

*前に*値を割り当てようとしているため、未定義です。 '$ .getJSON'は非同期です。 – David

+0

これはグローバル変数ではありません。 –

+0

非同期コードについて読む必要があります。 – sjahan

答えて

0

$.getJSONは非同期関数なので、コールバックは将来終了した後に呼び出されます。だからconsole.log(all_app)が最初に呼び出されるのは、$.getJSONの直後に同期的に呼び出されるからです。

+0

答えをありがとう。上記のコードをグローバル変数のgetJSON結果に変更する方法を教えてください。私はhttps://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-callを読む。しかし、それを理解することは難しいです。私の発行体を修正する方法をあなたの答えを編集していただけますか? –

関連する問題