在AJAX返回空数组后将项目推入数组。我该如何解决?

时间:2014-07-27 06:59:53

标签: javascript jquery ajax

我通过AJAX获取JSON并将部分结果推送到在AJAX请求之前声明的数组。当我在一次完成array.push时,我在console.log()中查询queryTop变量,即使AJAX响应有JSON数据,它也会返回一个空数组。为什么是这样?我在其他地方读到因为它是异步的,其他代码在AJAX调用返回数据之前运行但是在这里,我使用.done()函数和pushQueries的回调。为什么它还没有运作?我该如何解决这个问题?

function getQueries() {
  var queriesFailed = [],
      queriesTop    = [];
  $.ajax({url: "getStats"}).done(function(data) {
    pushQueries(data);
  });

  function pushQueries(data) {
    var resultsFailed = data['query']['failed']['queries'],
        resultsTop    = data['query']['top']['queries'];

    for (var i = 0; i < resultsFailed.length; i++) {
      queriesFailed.push(resultsFailed[i]);
    };

    for (var i = 0; i < resultsTop.length; i++) {
      queriesTop.push(resultsTop[i]);
    };
  }

  console.log(queriesTop);

  return queriesTop;
}

0 个答案:

没有答案