1

谁能告诉我为什么这对我不起作用?

示例页面在这里

http://totalcommunitycollegemove.com/post-438.html

window.fbAsyncInit = function() {   
    FB.init({appId: '194189377275548', status: true, cookie: true,
         xfbml: true});

};
(function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
}());

function catchCommentAdd()
{
    $.ajax({
        type: "POST",
        url: "ajaxCommentCount.php",
        data: "id=<?php echo $_GET['id']; ?>&direction=up",
        dataType: "json"
    });
    return true;
}

function catchCommentDelete()
{     
    $.ajax({
        type: "POST",
        url: "ajaxCommentCount.php",
        data: "id=<?php echo $_GET['id']; ?>&direction=down",
        dataType: "json"
    });

    return true;
}

FB.Event.subscribe('comments.create', function(response) { 
    alert(response);
    catchCommentAdd();
});
4

4 回答 4

4

我有同样的问题,但也许找到了解决方案(在我的测试站点上工作)。似乎事件名称“comments.create”是错误的。正确的(或至少有效的)事件是“comment.create”(不带 s)

这是我的代码片段:

<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId:  'APP_ID',
            status: true,
            cookie: true,
            xfbml:  true
        });

        FB.Event.subscribe('comment.create', function(response) {
            alert(response.commentID);
        });         

    };
    (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
    }());
</script>
<fb:comments href="YOUR_URL" num_posts="5" width="500" ></fb:comments>
于 2011-03-02T14:47:06.797 回答
2

使用“comment.create”而不是“comments.create”,它是单数的。

于 2011-03-10T20:06:05.090 回答
0

这段代码:

FB.Event.subscribe('comments.create',
function(response) { 
    alert(response);
    catchCommentAdd(); });

依赖于已经加载的 Facebook 的 Javascript SDK。因为这是异步发生的,所以您应该在 FB.init 调用之后将代码放在 window.fbAsyncInit 函数中:

window.fbAsyncInit = function() {   
    FB.init({appId: '194189377275548', status: true, cookie: true,
         xfbml: true});

    FB.Event.subscribe('comments.create', function(response) { 
        alert(response);
        catchCommentAdd();
     });
};
于 2011-02-27T04:19:16.300 回答
0

你读过 Facebook 的文档吗?不幸的是,这是一个很大的错误。
尝试使用 comments.add 而不是 comments.create...

于 2011-03-08T12:23:53.320 回答