0

これが私のコードです。「グーグルインスペクター」で「いたずら」変数をチェックすると、すべて正常に動作します。しかし、最後の行の「アラート」は0サイズの配列を示しています。ローカル/グローバル変数をいじくりまわしますか?

<script type="text/javascript">
(function() { 

 pranks = [];

function getAllPranks(){


    $.getJSON('list.json', function(data) {

      $.each(data['pranks'], function(key, val) {
        pranks.push(val);
      });

    });

}

 $(document).ready(function(){


    getAllPranks();

    alert(pranks.length);

 });


 }());
 </script>
4

2 に答える 2

3

次のように変更します。

$.getJSON('list.json', function(data) {
  $.each(data['pranks'], function(key, val) {
    pranks.push(val);
  });
  alert(pranks.length); /* pranks has data now */
});
于 2012-05-04T21:34:22.213 に答える
1

あなたのコードを取る:

<script type="text/javascript">
(function() { 
    function getAllPranks( callback ) {
        $.getJSON('list.json', function(data) {
            $.each(data['pranks'], function(key, val) {
                pranks.push(val);
            });
            callback( pranks );
        });
    }

    $(document).ready(function(){
        getAllPranks( function( pranks ) {
            alert(pranks.length);
        } );
    });
}());
</script>

$.getJSON非同期です。これはfunction(data)、結果が戻ってくると、コールバック関数 ( ) が実行されることを意味します。を実行するalert(pranks.length)と、現時点では応答が返ってこないため、関数は実行されていません。

于 2012-05-04T21:49:36.273 に答える