[英]How to use jQuery ajax data to variable
我有以下javascript代码:
function initSite(){
var site;
$.getJSON(www+'init/initSite', function(data) { site = data; });
}
$(document).ready(function(){
var site = initSite();
console.log(site);
}
这返回未定义 ...我如何将我收到的json对象存储在site变量中,以便以后使用?
编辑:这似乎可行,但我不确定使用此解决方案是否正确
var site = null;
$.ajax({
url: www+"init/initSite",
async: false,
dataType: 'json',
success: function (data) {
site = data;
}
});
console.log(site);
function initSite(onSuccess){
$.getJSON(www+'init/initSite', onSuccess);
}
$(document).ready(function(){
initSite(function(data){
var site = data;
// initialize your code.
});
}
问题只是一个未命中的概念:
getJSON
是一个异步调用,并且site = data;
只会在DOM准备就绪后才会发生。
为了使一切按应有的方式工作,初始化需要从异步调用结果开始,而不是之前,例如:
// no need to wait for DOM ready to call `initSite`
initSite();
function initSite() {
$.getJSON(www+'init/initSite', function(data) {
initialization(data);
});
}
function initialization(site) {
// initialize all the things that need to be done
console.log(site);
}
$(document).ready(function(){
// do other stuff, for example show a loading message/image
}
当然,您会不确定,因为您的函数不会返回任何内容,而且ajax调用也是异步的,因此您必须等待服务器响应。 由于$.ajax
(和快捷方式)返回一个诺言,您可以使用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)
});
}
如您所见,此代码简短易读
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.