2011-10-16 41 views
0
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()将返回所需的对象。但第二个控制台方法导致空数据。我已经重写了这个东西几次,似乎无法找到这个疯狂的理由。我错过了什么?getJSON不会允许数组通过

回答

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 
}); 
0

getJSON()方法是异步的地方不再被填在第二的console.log语句。