Javascript 通过回调从FB.api获取值?
我有一个简单的问题,一直在搜索堆栈溢出。在这个主题上有一些问题,但无法找到有效的解决方案 我有一个简单的函数,用于获取Javascript SDK上的页面喜欢数:Javascript 通过回调从FB.api获取值?,javascript,facebook-graph-api,callback,facebook-javascript-sdk,Javascript,Facebook Graph Api,Callback,Facebook Javascript Sdk,我有一个简单的问题,一直在搜索堆栈溢出。在这个主题上有一些问题,但无法找到有效的解决方案 我有一个简单的函数,用于获取Javascript SDK上的页面喜欢数: function getLikes(div, graf) { var numblike; FB.api(graf, function(response) { var numblike = response.likes; $(div).prepend(numblike); });
function getLikes(div, graf) {
var numblike;
FB.api(graf, function(response) {
var numblike = response.likes;
$(div).prepend(numblike);
});
return numblike; // can't get it to return
}
var pLike = getLikes ("#mydiv", /app_id); // always undefined
函数工作,它将正确的数字预先挂起到我的div,但return总是将我的变量设置为undefined。我知道脚本是异步运行的,我需要使用回调函数,但我就是做不好。您不能从函数返回numblike,因为它只在FB.api的回调中设置。
因此,您可以执行类似的操作-只需发送回调:
function getLikes(div, graf,callback) {
FB.api(graf, function(response) {
var numblike = response.likes;
$(div).prepend(numblike);
callback(numblike);
});
}
getLikes ("#mydiv", /app_id,function(numblike){
alert(numblike);
}); // always undefined
您有两次贴花
numblike
,只需在第二次贴花中删除var声明:
function getLikes(div, graf) {
var numblike;
FB.api(graf, function(response) {
numblike = response.likes; // var removed
$(div).prepend(numblike);
});
return numblike;
}
函数内部的警报以前也工作过。这里的目标是调用这个函数,并在全局变量数组中获得page like。因此,我可以从两个不同的fb页面中获取页面喜好,将它们存储在一个数组中,然后将它们相加。所以我需要
var pLikes=getLikes(等等)
返回一个我可以在全球使用的数字。。。在你的情况下,我得到了警告,但是var仍然没有定义。这只是一个如何控制变体Jeeze的示例。这里的要点是,你只能通过回调从facebook访问numblike。因此可以设置var arr=[];在回调函数的上方和内部,您可以执行arr.push(numblike)。使用你的编程技巧一点…谢谢你在这方面的投入,但我没能让它以我想要的方式工作。切换到FB PHP SDK并在几分钟内解决了问题。。。