为什么这个全局变量没有改变?

时间:2011-02-15 15:14:36

标签: jquery ajax

为什么这会变为null而不是设置为从ajax调用返回的数据?它一定是我忽略的简单。

var message;

$(document).ready(function(){
    fbFetchMessage();
    alert(message);
});

function fbFetchMessage(){
    var url = "http://graph.facebook.com/companyname/feed?callback=?";  
        $.getJSON(url,function(json){
            message = json.data[0].message;
        });
}

2 个答案:

答案 0 :(得分:7)

消息 正在更改,但 后调用提醒

试试这段代码并亲自看看:

var message;

$(document).ready(function(){
    fbFetchMessage();
    alert(message);
});

function fbFetchMessage(){
    var url = "http://graph.facebook.com/companyname/feed?callback=?";  
        $.getJSON(url,function(json){
            message = json.data[0].message;
            alert("really it gets changed:"+message);
        });
}

答案 1 :(得分:4)

$.getJSON与任何其他.ajax()一样(实际上,通常是AJAX)运行 asyncronously (默认情况下)。

这意味着,您尝试在之前提醒{/ 1}} 您的成功处理程序可以实际定义它。

要解决此问题,您可能需要使用jQuerys Deferredhelp对象(如果您使用的是1.5.0 +)

message