Javascript 通过回调从FB.api获取值?

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); });

我有一个简单的问题,一直在搜索堆栈溢出。在这个主题上有一些问题,但无法找到有效的解决方案

我有一个简单的函数,用于获取Javascript SDK上的页面喜欢数:

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并在几分钟内解决了问题。。。