在使用jQuery运行代码之前等待AJAX​​调用

时间:2013-11-11 02:44:45

标签: javascript jquery ajax asynchronous

我正在使用一些JSON,在我的其余代码运行之前我需要这些信息。我是jQuery的新手所以一直在查看$ .when()并将AJAX异步设置为false(这可能不是最好的选择)。我也有一个问题,我的变量在我的AJAX调用之外是未定义的。这是我的代码 - 任何帮助/建议都会非常感激。

//在进行AJAX调用时不显示任何内容(将在此处添加加载微调器)

$('body').css('display','none');

// Ajax调用加载图片

var test = $.ajax({
  dataType: "json",
  url: "../quiz/scripts/test.json",
  success: function() {
    console.log("Loaded in AJAX");
  var results = test.responseJSON.Items.Pics;
  console.log(results);
  $('body').css('display','block');
}
});

//尝试检索我的结果变量

console.log("Loaded Outside of AJAX");
console.log(results);

控制台正在给我这个:

    Loaded Outside of AJAX [VM] quiz.js (23396):18

    Uncaught ReferenceError: results is not defined [VM] quiz.js (23396):19

    XHR finished loading: "http://localhost:8888/.....etc"

    Loaded in AJAX [VM] quiz.js (23396):9

    [Object, Object, Object, Object, Object]

如何在“加载到AJAX之外”之前出现“加载AJAX”文本,如何在AJAX调用之外使用变量“results”?

1 个答案:

答案 0 :(得分:1)

试试这个:

$.getJSON("../quiz/scripts/test.json", null, function(data) { 
    //If you want to, you can call the data here.
}).done(function(data) {
  console.log("The AJAX call is finished! Whoop dee doo!");
  console.log(data);
}); 

如果您愿意,您可以就如何形成JSON请求in here提供一些很好的参考。我直接从API文档中学到了很多东西。