所以我试图在这样的javascript中填充地图
{ showOnLoad: places ....
它可以通过这样的for循环完成工作(它确实显示了标记)这个工作
var places = [];
for(var x= 0; x<10; x++){
places[x] = {
canEdit: false,
lat: 53.79+x,
lng:-1.5426760000000286+x,
name: "Somewhere "+x
}
}
但是当我尝试使用我在其他页面上从JSON / PHP收到的信息填充它时,它不起作用,并且它不会填充标记......
var places = [];
$.getJSON(url,function(data){
var x = 0;
$.each(data.lugar, function(i,user){
places[x] = {
canEdit: false,
lat: user.latt,
lng: user.lng,
name: user.name
}
x++;
});
});
即使我尝试这样做,它也没有显示任何内容,即使如果我不使用我的变量它也不起作用......就像这样
var places = [];
$.getJSON(url,function(data){
var x = 0;
$.each(data.lugar, function(i,user){
places[x] = {
canEdit: false,
lat: 53.79+x,
lng:-1.5426760000000286+x,
name: "Somewhere "+x
}
x++;
});
});
我一无所获,我不知道我是否错过了什么。我对这个想法已经不多了。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
我的猜测是x
不在$.each()
的回调函数的变量范围内。相反,为什么不依靠回调参数之一中设置的i
索引:
$.each(data.lugar, function(i, user) {
places[i] = {
canEdit: false,
lat: user.latt,
lng: user.lng,
name: user.name
};
});
答案 1 :(得分:0)
在使用数组之前,您需要等待each
函数继续执行所有结果:
var places = [];
$.when(
$.getJSON(url, function (data) {
var x = 0;
$.each(data, function (i, user) {
places[x] = {
canEdit: false,
lat: user.latt,
lng: user.lng,
name: user.name
};
x++;
});
})).done(function () {
//Here the array "places" is ready to be used
alert('Hey!');
});