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

我正在使用一些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”?

试试这个:

 $.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请求提供一些很好的参考。 我直接从API文档中学到了很多东西。