使用但不使用$ .each

时间:2014-05-17 01:32:38

标签: javascript php jquery arrays for-loop

所以我试图在这样的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++;
    });
});

我一无所获,我不知道我是否错过了什么。我对这个想法已经不多了。

非常感谢任何帮助。

谢谢!

2 个答案:

答案 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!');
});