2010-09-19 19 views
0

我想发出一个HTTP请求,以便接收Facebook应用内登录的facebook.com用户主页的内容。该应用程序加载内部框架。我正在使用James Padolsey制作的jQuery的跨域Ajax mod:http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/。这个mod对于google.com这样的网页来说很好,就像例子中介绍的一样。使用jQuery的跨域请求在Facebook应用中不起作用

不幸的是,如果我尝试类似:

$('#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 mod中,所以它与我在脚本中写的任何以前的代码没有任何关系。

任何想法?

+0

嗨,本尼,欢迎来到SO。几周前我有类似的问题。 http://stackoverflow.com/questions/3457778/same-origin-policy-violated – 2010-09-19 10:09:15

+0

嗨Henrik,感谢您的链接。我尝试了你的建议,但是当我点击按钮时,我的警告框中出现“失败0”。 – Benny 2010-09-19 10:29:18

回答

0

JSON不起作用跨域。您需要在getJSON调用中使用JSONP或更好的方式使用“callback =?”参数。

例如

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

} 

哪里fbtoken是你的访问令牌和rtnmsg是返回的对象。这个为我工作。

干杯

+0

该函数可能用于访问Graph API,但这不是我想要的。我严格分析登录用户的Facebook主页。使用getJSON调用将会转化为如下形式:$.getJSON("http://www.facebook.com/", function(rtnmsg) {...} 如果您从Facebook应用程序尝试此操作,您将看到rtnmsg未定义 – Benny 2010-10-11 18:27:05