我还是JS的新手:我在连接两个ajax请求时遇到了麻烦。第一个很简单:
向fb询问用户ID:
FB.api('/me', function(user) {
if (user) {
}
});
在自定义fb对象上发布自定义Facebook操作:
function myfunction()
{
FB.api(
'/me/fb:myaction',
'post',
{ myobject: '/object/<%=@obj.id%>' },
function(response) {
if (!response || response.error) {
console.log('Error occured');
} else {
console.log('FB POST was successful! Action ID: ' + response.id);
$.ajax({
type: "POST",
url: "/record_action",
data: { facebook_id: "John", item_id: "<%= @candidate.id %>" },
dataType: 'json',
success: function(data) {
console.log(data);
}
}).done(function( msg ) {
console.log(msg);
});
}
});
}
如何保存user.facebook_id并将其传递给myfunction()调用。当我尝试类似的东西时:
FB.api('/me', function(user) {
if (user) {
myvar = user.facebook_id
}
});
并尝试将myvar传递给myfunction调用它不起作用。我确信这是非常微不足道的。怎么办呢?
答案 0 :(得分:0)
更好的答案是使用一个闭包(可能是第一个查询的成功函数)来捕获这个答案,然后在该闭包内完成剩下的工作。
效率较低(但在学习时可能更实用)是将数据放在两个调用之间的全局变量中。 JavaScript中的全局变量存在无数问题,如果您不能完全控制页面上运行的所有脚本,它们应该像瘟疫一样避免。