任何人都可以告诉我为什么这个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');
});
我甚至尝试使用facebook的图形API仍然没有alert
在sample code我试过getJSON调用facebook,twitter,flicker,只有闪烁的调用alert
被提升。
答案 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)