我有一个来自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必须在实际包含用户名之前访问一次。我不明白这是怎么回事。
答案 0 :(得分:2)
function(response) {
//do entire DOM manipulation here
}
被调用。 现在alert()延迟执行的时间足够长,以便该回调获得calland并定义perName。
只需将您的DOM操作代码移动到回调中,以确保您确实有响应。