【问题标题】:Cross-domain Requests with jQuery doesn't work in Facebook App使用 jQuery 的跨域请求在 Facebook 应用程序中不起作用
【发布时间】:2010-09-19 10:07:14
【问题描述】:

我想发出一个 HTTP 请求,以便在我的 Facebook 应用程序中接收 facebook.com 登录用户的主页内容。该应用程序在 iframe 中加载。我正在使用 James Padolsey 为 jQuery 制作的跨域 Ajax 模块:http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/。如示例中所示,此 mod 适用于 google.com 之类的页面。

不幸的是,如果我尝试这样的事情:

$('#container').load('http://www.facebook.com/');

我没有得到任何结果,也没有错误。此外,如果我尝试:


$.ajax({
            type: 'POST',
            url: 'http://www.facebook.com',
            success: function(html){
                process(html);
            },
            error: function(){
                debug("error");
            }
        });

我在 Firebug 控制台中收到一条错误消息:data.results[0] is undefined。 这个错误出现在 James Padolsey 的 Ajax 模组中,因此它与我之前在脚本中编写的任何代码都没有任何关系。

有什么想法吗?

【问题讨论】:

标签: jquery facebook cross-domain


【解决方案1】:

JSON 不能跨域工作。您需要使用 JSONP 或更好,但在 getJSON 调用中使用“callback=?”参数。

例如

$.getJSON("https://graph.facebook.com/me/friends?callback=?&access_token="+fbtoken, function(rtnmsg) {

}

其中 fbtoken 是您的访问令牌,而 rtnmsg 是返回对象。这个对我有用。

干杯

【讨论】:

  • 该函数可能适用于访问 Graph API,但这不是我想要的。我非常想解析登录用户的 Facebook 主页。使用 getJSON 调用将转换为如下内容: $.getJSON("<a href="/default/index/tourl?u=aHR0cDovL3d3dy5mYWNlYm9vay5jb20v" rel="nofollow" target="_blank">facebook.com</a>", function(rtnmsg) {...} 如果您从 facebook 应用程序尝试此操作,您将看到 rtnmsg 未定义
猜你喜欢
  • 2014-02-09
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 2015-01-26
  • 2015-04-15
  • 2014-04-18
  • 1970-01-01
  • 2016-02-07
相关资源
最近更新 更多