数组碰到奇怪问题

fansino 2020-04-27 05:18:08
        var markers = new Array();

var image_green = '__ROOT__/baidumap/img/spotlight-green.png';
var image_power = '__ROOT__/baidumap/img/spotlight-power.png';
var image_net = '__ROOT__/baidumap/img/spotlight-net.png';
var image_grey = '__ROOT__/baidumap/img/spotlight-poi-grey.png';
$(document).ready(function() {
getdata();
// initMap();
setInterval("frash()",10000);
});

function frash(){
// map.clearOverlays();//清空地图上标注点
getdata();
// addMapOverlay();
markers.splice(0,markers.length);//清空数组
}
function getdata(){
$.ajax({
url:"{:U('Zhandgl/zhandztxx')}",
type:"get",
dataType:'json',
success:function(data){
if(data.status == 1){
$.each(data.data,function(index,d){
markers[index]={lat:d.f_nb_baidujingd,lng:d.f_nb_baiduweid,bh:d.f_vc_zhandbh,title:d.f_vc_zhandmc,zh:d.f_vc_zhuangh,zt:d.f_nb_zhandzt};
});
}else{
layer.msg(data.msg);
}
}
});
console.log(markers);
}



页面加载时的数组如图所示 ,显示是这样的[],定时取得的数组是(4)[{...},{...},{...},{...}] 。这两个所示是一样方法。恳请兄弟帮忙看一下。
...全文
212 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jio可 2020-04-27
  • 打赏
  • 举报
回复
在ajax外面打印显示肯定是空数组,数据是异步赋值的,在浏览器点开空数组的时候已经有值了。定时器的时候数组已经有上次的值了,打印以后才执行的数组清空。
天际的海浪 2020-04-27
  • 打赏
  • 举报
回复
ajax是异步加载的,$.ajax()后面的console.log(markers);会先执行,不会等待加载完毕。 所以输出的就是空数组。 定时执行时ajax已经加载完了,就有数据了。只不过这个数据是上一次加载的数据。
world_broken 2020-04-27
  • 打赏
  • 举报
回复
console放进success 里

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧