将json数据加载到javascript全局变量

时间:2016-10-26 23:16:48

标签: javascript jquery ajax

var locations = [];
$.getJSON("locations.json", function(json) {
  console.log(json);
  json.forEach(function(locItem){
    locations.push(locItem);
  });
});

console.log(locations);

第3行日志确实打印了我的json列表,但第9行只记录了[]。我尝试使用window.locations,global.locations或定义像

这样的东西
var self = this;

在全局范围内,然后在函数内使用self.locations。它们都不起作用。

2 个答案:

答案 0 :(得分:0)

这是因为执行顺序如下:

// create empty array
var locations = [];

// attempt to get json file (locations is unchanged)
$.getJSON("locations.json", callback); 

// print out empty locations variable
console.log(locations);

// json is finally retrieved, and the callback function is processed
function callback(json) {
    console.log(json);
    json.forEach(function(locItem){
        locations.push(locItem);
    });
});

在检索到json之前,不会调用回调函数。 等待不会发生这种情况。

答案 1 :(得分:0)

尝试:

   var locations = [];
    $.getJSON("locations.json", function(json) {
      console.log(json);
      json.forEach(function(locItem){
        locations.push(locItem);
      });
    }).then(function() {
          console.log(locations);
   });