在使用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文档中学到了很多东西。