这是我的代码。如果我通过“谷歌检查员”检查“恶作剧”变量一切正常。 但是最后一行的“警报”显示了一个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>
答案 0 :(得分:3)
将其更改为:
$.getJSON('list.json', function(data) {
$.each(data['pranks'], function(key, val) {
pranks.push(val);
});
alert(pranks.length); /* pranks has data now */
});
答案 1 :(得分: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)
时,该函数尚未执行,因为此时响应尚未返回。