Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript facebook api-失去我的作用域_Javascript_Facebook_Facebook Graph Api_Facebook Javascript Sdk - Fatal编程技术网

Javascript facebook api-失去我的作用域

Javascript facebook api-失去我的作用域,javascript,facebook,facebook-graph-api,facebook-javascript-sdk,Javascript,Facebook,Facebook Graph Api,Facebook Javascript Sdk,我正在使用facebook API开发应用程序。 我想做的很简单——得到一个帖子,然后得到这个帖子的喜欢人数 然后我想把博文故事和喜欢的数量结合起来。 稍后,我将使用一个循环在一系列帖子上进行迭代 我的问题解释在代码中: $(function () { $("#mybutton").click(function () { FB.api("/me/posts", function (response) { /* first callback

我正在使用facebook API开发应用程序。 我想做的很简单——得到一个帖子,然后得到这个帖子的喜欢人数

然后我想把博文故事和喜欢的数量结合起来。 稍后,我将使用一个循环在一系列帖子上进行迭代

我的问题解释在代码中:

$(function () {
    $("#mybutton").click(function () {
        FB.api("/me/posts", function (response) {
            /* first callback
             *
             * i have access to global scope here.
             */

            var firstpost = response.data[0];

            FB.api("/" + firstpost.id + "/likes", function (response) {
                /* second callback inside the first callback
                 *
                 * here i lost my access to the first callback scope.
                 * my access is only to local and global scope. 
                 * i can't see anymore what is inside firstpost variable;
                 */
                console.log(firstpost);
                //this will give a reference error
            })
        })
    })
});

也许有更好的方法可以做到这一点?

您可以对响应参数使用不同的名称,但有一种更好的方法是只使用一个API调用:

/me/posts?fields=message,likes
…或使用JS SDK:

FB.api('/me/posts', {fields: 'message,likes'}, function (response) { ... }

谢谢。你能解释一下为什么重命名第二个“响应”最终会创建一个闭包吗?很可能是因为它只是一个引用,而不是一个副本……但是你真的应该使用一个api调用来实现这一点