getJSON不允许数组通过

时间:2011-10-16 08:12:40

标签: javascript jquery

function near_home(lat,long,miles) {
  var url = "api_url";
  var places = [];

  $.getJSON(url, function(data) {
    $.each(data['results'], function(i, place) {
      places.push(place);
    });
    console.log(places);
  });
  console.log(places);
  return places;
}

所以第一个console.log()将返回所需的对象。但第二个控制台方法导致空数据。我已经多次重写了这个东西,似乎无法找到这种疯狂的理由。我错过了什么?

2 个答案:

答案 0 :(得分:2)

AJAX请求是异步的。您需要在回调中执行以下所有代码。

可能的解决方案是:

function near_home(lat,long,miles,cb) {
    var url = "api_url";
    var places = [];

    $.getJSON(url, function(data) {
        $.each(data.results, function(i, place) {
            places.push(place);
        });
        cb(places);
    });
}

使用此功能时,请按以下方式调用:

near_home(lat, long, miles, function(places) {
    // your code using the returned array
});

答案 1 :(得分:0)

getJSON()方法是异步的,因此在第二个console.log-statement中不会填充位置。