2012-01-13 12 views
0

私は間違ったことをしているに違いありません。私は以下のコードがグローバル変数 'gvar'を更新してアクセスすることを望んでいましたが、そうではありません。私は何をしていますか?JavaScriptのアップデートとアクセス外の変数の機能

<script type="text/javascript"> 
    var gvar; 
    $(function() {      
     $(document).ready(function() { 
      $.getJSON("json.php", function (myData) { 
       $.each(myData.tag, function (t, myData) { 
        if(myData.myId != null) { 
         gvar = myData.myId; 
        } 
       }); 
       return false; 
      }) 
     }); 
    }); 
</script> 

<script type="text/javascript"> 
    alert(gvar); 
</script> 
+0

あなたはalert(gvar)を試しましたか?関数の外に? – Dev

+2

これはサンプルコードの誤字ですか?あなたはアラート(gvar)ではなくアラート(myId)を行います。それ以外はうまくいくはずです。 – Archer

+0

はい、申し訳ありませんが、誤字...警告する必要があります(gvar)...まだ何も返されません。 – echez

答えて

3

gvarは、DOMの準備が整うとすぐに設定されます。ただし、アラートはコードの一部が解析されるとすぐに実行されます。 ready()機能の最後にアラートを入れてみてください。

@Yoshiには、もうちょっと見逃したことがあります。変数の人口は、要求が正常に実行されるまで遅延さえさえあります。これをテストするには、数秒のタイムアウトを設定して、変数に警告します。要求はそれまでに完了しているはずです。変数にはアラートできる値が設定されています。しかし、これは、変数がグローバルスコープ内で動作するかどうかをテストする目的にすぎません。なぜなら、コールバック内で警告するときに、もちろん変数は警告のすぐ上に設定されているからです。 ;)

+0

修正がありますが、明らかに6時間後まではコードを回答として投稿できません。とにかく、多くのありがとう! – echez

+0

私の答えは助けになっていますか?たぶん簡単なコメントであなたのソリューションを記述することができます。 – Connum

関連する問題