2010-09-19 20 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