2010-06-12 53 views
0

爲什麼下面的代碼顯示「獲得了結果爲空」alertbox?而請求似乎是發送適當的json。無法從jQuery獲取twitter狀態更新

$(function(){ 
     $.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?screen_name=twitterusername', function(data) { 
     alert('got the result '+data); 
     }); 
     }); 

回答

0

由於跨域安全策略。

$(function(){ 
     $.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?screen_name=twitterusername&callback=?', function(data) { 
     alert('got the result '+data); 
     }); 
     }); 

http://www.jsfiddle.net/yewVa/

注意添加callback=?的URL。請注意,服務器必須支持JSONP響應才能使其工作。

請參閱http://api.jquery.com/jQuery.getJson/以瞭解關於這兩者的更多詳細信息。

JSONP要求您從中抽取數據的網站了解JSONP,而不是它運行的網站。 JSONP的工作原理是將<script>標籤注入文檔,將src設置爲遠程文檔。如果你的瀏覽器只顯示一個「?」作爲回調參數,那麼jQuery完成了一個小程序之後,網址爲http://somewhere.com/?someparam=4&callback=foo結束。遠程服務器響應被配製成foo({ someparam:4}),因爲它已經加載到<script>標籤被解析爲的JavaScript。

注意,因爲這種方式的,有錯誤處理的小方法可行。

+0

是否跨域安全意味着我將無法在博客中使用上述小部件中的博客? – 2010-06-12 10:48:29

+0

@Bunny:你應該可以使用它。我也擴大了我的答案。 – Matt 2010-06-12 10:57:04