2009-07-12 112 views
2

获取数据我正在写一个web应用程序,需要初始化我通过$ .getJSON()方法拉一些参数。

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

现在,因为这些值将在全球整个脚本中使用,不会直接触发事件(这是$ .getJSON(中)唯一实现我的文档中找到),我怎么能回国或检索此回调数据?

+1

我没有在这里得到你的问题,$ .getJSON第二个参数是一个回调函数,这就是所谓一旦请求已完成并成功。 – 2009-07-12 01:52:19

+0

你想用getJSON中的数据做什么? – txwikinger 2009-07-12 02:50:35

回答

15

最好的办法是坚持回调技术。

有2个真正的办法,使其工作,两者基本相同。

$.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(即:具有它返回一个值)会使用眼泪和痛苦都为你人们才结束您的网站,因为同步连接有阻止整个用户界面的趋势。 :)

因为它的立场,做这样的事异步

var i = null;        #1 
$.getJSON("../config/", function(data) { #2 
     i = data;       #3 
});          #4 
some_function_with(i);      #5 

就不行,因为5号线几乎是保证行之前执行3.

+0

你刚刚帮了我一笔不小的交易。有一个upvote! – Daishiman 2009-11-23 10:37:12

3

肯特张新军:我不知道如果你的方法可能会更好,所以如果你的方法是更好地让我知道如何,我会在我自己接受你的解决方案,但我这是怎么做的:

var my_data = null; 

$.ajax(
{ 
    url: "../config/", 
    dataType: "json", 
    async: false, 
    success: function(data) 
    { 
     my_data = data; 
    } 
}); 

也谢谢丰富ieHindle,我不知道可以在不返回的情况下替换函数外部的变量。