【问题标题】:Using the new facebook graph api, ajax calls returns null (empty)使用新的 facebook graph api,ajax 调用返回 null(空)
【发布时间】:2010-06-29 07:34:23
【问题描述】:

我正在试用 facebook 的新图形 api。我正在尝试使用 jquery ajax 获取一些数据。 这是我的 javascript 代码示例,非常基本...

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);  
      }
   });

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

我做错了什么?感谢大家的帮助!

【问题讨论】:

    标签: javascript facebook jquery


    【解决方案1】:

    我之前已经讨论过这个问题并问过这个问题。我做了一个快速的tutorial,它完全涵盖了这一点并解释了这一切

    简而言之: 根据同源策略,JSON 不适合跨域使用。然而,解决方法是使用 JSONP,我们可以在 jQuery 中使用 facebook 的图形 api 中支持的回调参数来执行此操作。我们可以通过将参数添加到您的网址来做到这一点,例如

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

    通过使用回调=? jQuery 自动更改 ?将 json 包装在一个函数调用中,然后允许 jQuery 成功解析数据。

    也可以尝试使用 $.getJSON 方法。

    【讨论】:

    • 我认为重要的是要注意 Facebook 图形 API 确实支持 JSONP 使其能够工作。
    【解决方案2】:

    我正在尝试做类似的事情,在测试中我能够获得保存在 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>
    

    希望对您有所帮助! :)

    【讨论】:

      【解决方案3】:

      ...图形 API 支持 JSONP。只需将 callback=methodname 作为额外参数传递,返回的内容将包装在函数调用中,允许您使用动态插入的脚本标签来获取该数据。 http://forum.developers.facebook.com/viewtopic.php?pid=253084#p253084

      【讨论】:

        【解决方案4】:

        由于same-origin policy,您不能执行这样的跨域 AJAX 请求。相反,请使用基于脚本标签的 Facebook 的JavaScript SDK

        【讨论】:

        • 不是跨域相关的。我可以使用网络分析器(wireshark)查看来自 Facebook 的 json 数据 这个线程是关于类似的问题 stackoverflow.com/questions/2387271/… 也许与 gzip 有关,但甚至不确定......我对 youtube var url=" 有类似的调用gdata.youtube.com/feeds/api/…";尽管 gzip 编码与 facebook 调用相同,但它仍然有效
        • 好吧......经过几个小时的调查,我更加困惑:)如果Firefox通过隐藏responseText来实现同源策略,那么它可能是(我会给你1分24 小时过去了)
        猜你喜欢
        • 1970-01-01
        • 2018-10-02
        • 2015-07-24
        • 1970-01-01
        • 1970-01-01
        • 2019-09-19
        • 2011-02-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多