2010-06-29 119 views
6

我尝试了facebook的新图形api。我试图使用jQuery ajax获取一些数据。 这是我的javascript代码,非常基本的样本...使用新的facebook图形api,ajax调用返回null(空)

var mUrl = 'https://graph.facebook.com/19292868552'; 
    $.ajax({ 
     url: mUrl, 
     dataType: 'json', 
     success: function(data, status) { 
      $('#test').html(data); 
      alert(data); 

     }, 
     error: function(data, e1, e2) { 
     $('#hello').html(e1); 
     } 
    }); 

的网址是不需要的访问令牌(尝试使用浏览器)的网页,但成功函数返回一个空对象或null。

我在做什么错?感谢所有帮助!

+1

正是我的问题! – digiguru 2010-10-27 19:10:20

回答

0

由于same-origin policy,您无法进行类似的跨域AJAX请求。相反,使用Facebook的JavaScript SDK,这是基于脚本标记。

+0

谢谢!我会试一试 – 2010-06-29 08:06:27

+0

这不是跨域相关的。我可以看到使用网络分析器(wireshark)从Facebook的JSON数据 这个线程是关于类似的问题 http://stackoverflow.com/questions/2387271/ajax-response-is-gzip-compressed-prototype-firefox-它可以处理它 也许与gzip有关,但不能确定即使这一点...我有一个类似的电话给youtube var url =“http://gdata.youtube.com/feeds/api/videos? = 2&ALT = jsonc&格式= 5" q = “+查询+” &最大结果= 30&v; 它工作,尽管与Facebook的gzip编码相同,请致电 – 2010-07-25 13:49:29

+0

以及...经过一个小时的调查,我甚至更困惑:)如果Firefox通过隐藏responseText实现同源政策,那么它可以(即时通过给你回1点,因为24小时过去了) – 2010-07-26 11:38:21

10

我已经覆盖了此问题,并提出此问题之前。我做了一个快速的tutorial其中涵盖了这一点,并解释这一切

总之: JSON不是根据其同源策略为跨域使用制定的。然而,解决方法是使用JSONP,我们可以在jQuery中使用Facebook的图形api中支持的回调参数。我们可以通过使用回调=添加参数到您的网址像

https://graph.facebook.com/19292868552?callback=?

这样做呢? jQuery自动更改?在一个函数调用中包装json,然后允许jQuery成功解析数据。

也尝试使用$ .getJSON方法。

+0

我认为它的重要注意事项Facebook图形API确实支持JSONP,使其能够工作。 – 2012-12-31 20:32:46

3

我试图做同样的事情,在测试中我能得到我保存在的jsfiddle工作结果:http://jsfiddle.net/8R7J8/1/

脚本:

var facebookGraphURL = 'https://graph.facebook.com/19292868552'; 
$.ajax({ 
    url: facebookGraphURL, 
    dataType: 'json', 
    success: function(data, status) { 
     $('#output').html('Username: ' + data.username); 
    }, 
    error: function(data, e1, e2) { 
     $('#output').html(e2); 
    } 
}) 

HTML:

<html> 
    <body> 
    <div id="output">BorkBorkBork</div> 
    </body> 
</html> 

希望有帮助! :)