为什么这个全局变量没有改变?
为什么这会变为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; }); }
消息正在更改,但在您调用警报后
试试这段代码,亲眼看看:
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); }); }
$.getJSON
与任何其他.ajax()
(实际上,通常是AJAX)一样,是异步运行的(默认情况下)。
这意味着,您尝试在成功处理程序实际定义之前提醒message
。
要解决这个问题,您可能需要使用jQuerys Deferred
帮助对象(如果您使用的是1.5.0+)
$(document).ready(function(){ fbFetchMessage().done(function(json) { alert(json.data[0].message); // data will also be the result which was returned }); }); function fbFetchMessage(){ var url = "http://graph.facebook.com/companyname/feed?callback=?"; return $.getJSON(url); }