2011-03-03 27 views
0

任何人都可以告诉我为什么这个jQuery功能不起作用。它不提供alertjQuery.getJSON不适用于twitter

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

在小提琴手我可以看到,预期的JSON已被返回。

但是呼叫使用在jQuery的文档的示例代码闪烁的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,闪烁,只有闪烁的电话alert被引发。

回答

9

你需要追加一个回调参数到url,以便它成为一个jsonp调用。

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

试过没有运气! – 2011-03-03 16:58:00

+0

它应该工作。这对我来说很好,例如:api.twitter.com/1/statuses/user_timeline.json?screen_name=marcusf&callback=function_i_want_to_run。给我正确的jsonp响应。 – 2011-03-03 17:01:25

+0

是的,它工作..thanx ..它没有与jsoncallback工作,但与回调..任何解释.. ia新手到jQuery^_^ – 2011-03-03 17:08:13

2

你没有JSONP参数中的URL

$.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?jsoncallback=?', 
3

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

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

+0

你可以解释为什么闪烁与'jsoncallback =?'一起工作,而Facebook和Twitter使用'callback =?'在url – 2011-03-03 17:13:30

+0

无论如何,我从这里得到了我的答案http://stackoverflow.com/questions/2067472/please-explain-jsonp – 2011-03-03 17:21:57

+0

@Shekhar_Pro不错的链接,我发现那对我很有帮助。正如作者指出的那样,响应是否以JSON或JSONP的形式返回取决于服务器如何处理您的请求。在Flickr和Twitter的情况下,前者的API需要一个名为'jsoncallback'的参数,而后者只需要'回调' – 2011-03-03 17:27:16

相关问题