2014-01-08 121 views
0

如何獲得評論ID的評論文字基礎?我如何獲得評論文字基於評論ID?

我使用的是Facebook js api,當評論創建時,我想用ajax在我的數據庫中插入評論內容,但是下面的代碼沒有返回任何文本內容,我如何獲取內容?

在ajax中,我將基於commentID獲取內容,如何在FQL中獲取內容?

<script type="text/javascript"> 
FB.Event.subscribe(
    'comment.create', 
    function(href,commentID){ 
     // can only get commentID 
     // I need to get comment content, how to do ? 

     $.ajax({ 
      url:'jy_ajax.php', 
      type:'POST', 
      data:{ 
       commentID:commentID 
      }, 
      success:function(){} 
     }); 
    } 
</script> 
+0

您是否嘗試過記錄'href'來查看它包含的內容。據我記得第一個參數通常是'response',包含評論本身,而不是href? – adeneo

+0

href只是你評論過的網址,沒有評論文字 –

回答

1

如果當前用戶連接到您的應用程序,那麼這很容易做,如果他們不是,那麼我們必須做一些猜測。這是因爲在comment.create事件中返回的ID不是公共註釋ID - 它是私人ID,因此只有創建者才能檢索評論消息。我不知道Facebook爲什麼這樣做。

FB.Event.subscribe(
    'comment.create', 
    function(commentCreateResponse) { 

    /* if the user is authed then you can do this */ 
    FB.api('/' + commentCreateResponse.commentID, function(commentResponse) { 
     console.log(commentResponse.message); 
    }); 

    /* if not, then we have grab all the comments and guess */ 
    FB.api('/comments?ids='+commentCreateResponse.href, function(allCommentsResponse) { 
     var comments = allCommentsResponse[commentCreateResponse.href].comments.data; 
     var mostRecentComment = false; 
     for (var i = 0; i < comments.length; i++) { 
     var comment = comments[i]; 
     if ((false == mostRecentComment) || (comment.created_time > mostRecentComment.created_time)) { 
      mostRecentComment = comment; 
     } 
     } 
     console.log(mostRecentComment.message); 
    }); 
    } 
); 

上面的例子顯示了兩種方法 - 你應該刪除你不需要的方法。

在第一種方法中,當用戶連接時,它只是用評論ID擊中圖形API並返回結果。

在第二種方法中,當用戶沒有連接到我們的應用程序時,它查詢所有公共可用註釋並查找最近的註釋並假定這是用戶所做的註釋。這隻會在你沒有多個用戶同時發表評論的環境中工作 - 在這種情況下,它會導致結果錯誤。

希望有所幫助。