getJSON不允许数组通过

getJSON wont allow array to pass through

本文关键字:数组 不允许 getJSON      更新时间:2023-09-26
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()将返回所需的对象。但是第二个控制台方法的结果是空数据。我把这个东西重写了好几遍,但似乎找不到这种疯狂的原因。我错过了什么?

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

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