jQuery.getJSON不适用于twitter

时间:2011-03-03 16:52:07

标签: jquery facebook twitter getjson

任何人都可以告诉我为什么这个jQuery函数不起作用。它没有引发alert

$.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?',
  {
      screen_name: 'samajshekhar',
      count: '5',
  },
 function (data) {
      alert('hello world from twitter');
  });   

在fiddler中,我可以看到已经返回了预期的JSON。

然而,当使用jQuery文档中的示例代码调用flicker的api时,它会按预期提供alert

$.getJSON('http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?',
  {
    tags: 'cat',
    tagmode: 'any',
    format: 'json'
  },
  function(data) {
   alert('hello world from flicker');   
  });

以下是sample code on JS Bin

我甚至尝试使用facebook的图形API仍然没有alert

sample code我试过getJSON调用facebook,twitter,flicker,只有闪烁的调用alert被提升。

3 个答案:

答案 0 :(得分:9)

您需要将一个回调参数附加到网址,以便它成为一个jsonp调用。

http://api.twitter.com/1/statuses/user_timeline.json?callback=?

答案 1 :(得分:3)

这两个示例之间的区别在于Flickr API调用返回JSONP结果,而Twitter API调用返回JSON结果。 Twitter调用,因为响应是JSON,违反了Same Origin Policy,这阻止了运行源自另一个域的脚本;另一方面,JSONP响应不受此规则的约束。

正如其他用户指出的那样,追加'?callback =?'请求URL和Twitter API响应将采用JSONP的形式。

答案 2 :(得分:2)

您在网址

中没有JSONP参数
$.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?jsoncallback=?',