从$ .getJSON()方法获取数据

时间:2009-07-12 01:20:27

标签: javascript jquery getjson

我正在编写一个Web应用程序,需要初始化一些我通过$ .getJSON()方法提取的参数。

$.getJSON("../config/", function(data)
{
     console.debug(data);
}

现在,因为这些值将在整个脚本中全局使用,并且不会直接触发事件(这是我可以在文档中找到的$ .getJSON()的唯一实现),如何返回或检索此回调数据?

2 个答案:

答案 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,我不知道有可能在没有返回的情况下替换函数之外的变量。