用户在Facebook上共享内容后插入数据库

时间:2013-05-29 18:29:51

标签: php facebook facebook-javascript-sdk

我正在开发Facebook点击应用。在应用程序中,用户选择一个项目页面,在那里他可以写一个关于该项目的评论。在他撰写评论后,他点击了一个打开Facebook共享对话框的按钮,用户评论就在对话框中。

我想要完成的是在用户点击共享时将注释插入数据库,如果他点击取消则不会发生任何事情。

这是我用来打开对话框的功能:

function FacebookPostToWall()
    {
    var comment = document.getElementById('comment').value;;
    FB.ui({
        method: 'feed',  
        link: 'http://linkfortheitem.com',
        name: "Name of the item",
        caption: "Caption for the item",
        description: '' + comment,
        picture: '',
        message: ''
        },
        function(response){
            if(response && response.post_id) {
                alert('user has shared');
            }else {
                alert('user has not shared');
            }       
    });
    }

所以我的问题是,有没有办法调用我的php函数将注释插入回调函数内的数据库?

1 个答案:

答案 0 :(得分:0)

您可以使用ajax将注释发送到可以通过$_POST['comment'](或您决定调用参数)检索参数的php脚本。如果你使用普通的旧javascript,第一个例子会显示一些用于发送带有你的评论变量的ajax请求的东西。第二个更容易使用的例子使用jQuery,这绝对值得学习。这两个都会在您的脚本中立即(或替换)alert('user has shared');之后立即执行,这样只有在Facebook评论成功发布后才会发送呼叫。

如果您有任何疑问,请告知我们。)

Javascript示例

var xmlhttp;
if (window.XMLHttpRequest)
{
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{
    // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            alert('Comment sent to PHP, and the response is: '+xmlhttp.responseText);
        }
    });
xmlhttp.open("POST","yourphpscript.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("comment="+comment);

jQuery示例

$.post('yourphpscript.php', { 'comment': comment }, function(response) {
        alert('Comment sent to PHP, and the response is: '+response);
    });