2010-06-29 159 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> 

希望有幫助! :)