我有以下 JavaScript 代码:
function initSite(){
var site;
$.getJSON(www+'init/initSite', function(data) { site = data; });
}
$(document).ready(function(){
var site = initSite();
console.log(site);
}
它返回未定义...我如何存储在站点变量中收到的json对象以便我以后可以使用它?
编辑: 这似乎有效,但我不确定使用此解决方案是否正确
var site = null;
$.ajax({
url: www+"init/initSite",
async: false,
dataType: 'json',
success: function (data) {
site = data;
}
});
console.log(site);
最佳答案
当然,你得到了未定义,因为你的函数不返回任何内容,并且ajax调用也是异步的,所以你必须等待服务器响应。由于 $.ajax
(和快捷方式)返回一个 promise ,您可以使用 deferred 来完成此任务
function initSite(){
return $.getJSON(www+'init/initSite');
}
$(document).ready(function(){
$.when(initSite()).done(function(data) {
/* continue here the code execution, e.g. call another function */
doAllTheRemainingWorkWith(data)
});
}
如您所见,这段代码简短且易于阅读
关于javascript - 如何使用 jQuery ajax 数据变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9198581/