2010-06-12 112 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