2

我正在创建一个 facebook 墙(流)看起来像放在我的网站上。该组件将从特定页面的墙上读取所有帖子并通过图形 api 显示它们。我还希望用户能够喜欢“墙上”显示的帖子。

到目前为止,我有一个脚本,它使用图形 api 获取帖子的 JSON 列表,我还有一个 PHP 文件,可以喜欢在 post_id 查询字符串参数中提交 ID 的帖子,这确实有效。我看到 LIKE 已提交。

要调用这个 PHP 文件,我使用 jQuery ajax:

 function do_likes(post_id) {
    $.ajax({
        type: "POST",
        url:"http://www.p-art.co.il/facebook_test/action.php?post_id=" + post_id
    });

Firebug 没有显示任何错误,但另一方面,LIKE 没有发布。我已经搜索了几个小时,但我找不到调用 PHP 文件的正确方法,以便 FB.api 调用正常工作。

先感谢您。-埃拉德

4

2 回答 2

0

It's hard to tell without seeing the source code for your action.php file but I'm guessing its not getting the users access token correctly due to it being called via AJAX.

If you can post your action.php source somewhere I should be able to help some more

于 2011-09-05T18:34:27.423 回答
0

使用 HTTP POST,数据通常从表单输入发送,其中enctype设置为application/x-www-form-urlencodedformat。因此,对于 AJAX POST,我们通常也会以这种格式发送数据,而不是作为查询字符串参数,这就是通常通过 HTTP GET 请求发送数据的方式以及您在上面发送数据的方式。

如果您将代码更改为

 function do_likes(post_id) {
    $.ajax({
        type: "POST",
        url:"http://www.p-art.co.il/facebook_test/action.php",
        data : { post_id : post_id }
    });
 }

它应该按预期工作(我不熟悉 PHP,但我假设您发布到的 URL 需要application/x-www-form-urlencoded格式数据)。使用jQuery.ajax(),如果您将数据对象设置为要发送到服务器的键/值对,jQuery 将enctype根据您使用的 HTTP 请求类型为您提供正确的(enctype如果需要,您可以覆盖,但通常这不是必需的,在大多数情况下默认值将是您需要的)。

此外,您可能希望设置在 AJAX 发布成功完成后调用的回调函数。为此success,向传递给$.ajax()调用的对象添加一个属性。

于 2011-02-20T13:36:01.627 回答