无法从Facebook接收姓名

时间:2010-12-23 04:52:00

标签: javascript jquery json facebook

我有一个来自xml响应的facebook用户ID号列表,我想要做的就是编写html,将他们的图片放在他们的名字旁边。不幸的是我遇到了一个奇怪的问题:

var friendList = "";
$(xml).find("id").each(function ()
{
    var tId = $(this).text();
    var tUrl = "/" + tId;
    var perName = "";
    FB.api(tUrl, function(response) {
        perName += response.name;
    });
    alert(perName);
    friendList += "<div class=\"picSpacer\"><img src=\"https://graph.facebook.com/"+tId+"/picture/?type=large\" class=\"friendDIV\" /><div class=\"nameBox\">"+perName+"</div></div>";
});

使用此代码可以正常工作,但如果我删除警报则无效。警报弹出未定义。就好像字符串perName必须在实际包含用户名之前访问一次。我不明白这是怎么回事。

1 个答案:

答案 0 :(得分:2)

这很简单。 FB.api()在完成时执行异步请求

function(response) { 
    //do entire DOM manipulation here
}

被调用。 现在alert()延迟执行的时间足够长,以便该回调获得calland并定义perName。

只需将您的DOM操作代码移动到回调中,以确保您确实有响应。