使用getJSON时未设置JavaScript中的全局变量

使用getJSON时未设置JavaScript中的全局变量

本文介绍了使用getJSON时未设置JavaScript中的全局变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码.如果我通过"google inspector"检查"pranks"变量,则一切正常.但是最后一行的警报"显示一个0大小的数组!我搞砸了本地/全局变量?

Here's my code. If i check "pranks" variable by "google inspector" all works fine.But the "alert" on the last line show a 0-size array!I mucking with local/global variables?

<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>

推荐答案

接受代码:

<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)时,该函数未执行,因为此时响应尚未返回.

$.getJSON is asynchronous. This means the callback function (function(data)) is executed once the result comes back. When you execute alert(pranks.length), the function has not executed because the response hasn't come back at this moment.

这篇关于使用getJSON时未设置JavaScript中的全局变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-13 10:19