GetJSON返回数据

时间:2014-04-17 20:44:04

标签: javascript jquery

这是我的代码:

var name;
function getFBName(username) {
    $.getJSON('http://graph.facebook.com/' + username, function (d) {
        name = d.name;
    });
}
getFBName("zuck");
console.log(name);

我几个小时都在苦苦挣扎,但我无法让getFBName函数返回用户名。

这是JSON btw:

{
   "id": "4",
   "first_name": "Mark",
   "gender": "male",
   "last_name": "Zuckerberg",
   "link": "https://www.facebook.com/zuck",
   "locale": "en_US",
   "name": "Mark Zuckerberg",
   "username": "zuck"
}

1 个答案:

答案 0 :(得分:4)

正如@jwatts1980所说,这是执行顺序的问题。在响应到达客户端之前,$.getJSON将立即返回,因此当您运行console.log时,它仍将等待。一种可能的解决方案是:

function getFBName(username) {
    $.getJSON('http://graph.facebook.com/' + username, function (d) {
        console.log(d.name);
    });
}
getFBName("zuck");

将正确记录Mark Zuckerberg。如果您有多种处理输出的方法,设置callback函数可能也很有趣:

function getFBName(username, callback) {
    $.getJSON('http://graph.facebook.com/' + username, function (d) {
        callback(d.name);
    });
}

function handleName(name) {
    // Do a lot of things here
    console.log(name);
}

getFBName("zuck", handleName);