我正在编写一个Web应用程序,需要初始化一些我通过$ .getJSON()方法提取的参数。
$.getJSON("../config/", function(data)
{
console.debug(data);
}
现在,因为这些值将在整个脚本中全局使用,并且不会直接触发事件(这是我可以在文档中找到的$ .getJSON()的唯一实现),如何返回或检索此回调数据?
答案 0 :(得分:17)
你最好的选择是坚持使用回调技术。
有两种真正的方法可以使它工作,两者基本相同。
$.getJSON("../config/", function(data) {
SomeObject.config = data;
SomeObject.load(); # assuming load tells some-object that it now has data and to get cracking
});
或
$.getJSON("../config/", function(data) {
SomeObject.load( data ); # SomeObject sets itself up and starts doing its thing
});
尝试以同步方式使用$ .getJSON(即:让它返回一个值)只会因为和使用您网站的人而感到沮丧和痛苦,因为同步连接有阻止整个UI的倾向。 :)
就目前而言,以异步方式做这样的事情
var i = null; #1
$.getJSON("../config/", function(data) { #2
i = data; #3
}); #4
some_function_with(i); #5
无效,因为第5行几乎可以保证在第3行之前执行。
答案 1 :(得分:3)
var my_data = null;
$.ajax(
{
url: "../config/",
dataType: "json",
async: false,
success: function(data)
{
my_data = data;
}
});
还要感谢RichieHindle,我不知道有可能在没有返回的情况下替换函数之外的变量。