我需要检查justin.tv上的流是否存在。提供一个简单的JSON API,如果我查询
http://api.justin.tv/api/stream/list.json?channel=channel_name
如果流是实时的,它将返回特定的JSON信息。
var url = "http://api.justin.tv/api/stream/list.json";
$.ajax({
url: url,
dataType: 'jsonp',
data: { channel: "scvrush1" },
success: function(data) { alert(data); }
});
看起来请求成功了,因为当我查看Chrome开发者工具中的Network
标签时,我可以看到回复
但是回调没有被执行。
我正在使用带有Rails 3.1.1的jQuery 1.4.2,但我认为这并不重要。
答案 0 :(得分:2)
您必须指定一个回调函数才能使用JSONP。 justin.tv要求的特定参数是“jsonp”
请参阅:http://apiwiki.justin.tv/mediawiki/index.php/REST_API_Documentation
这有点牵扯,因为他们不使用标准的“callback =?”那个jQuery喜欢。所以你必须手动设置回调变量。
请参阅:http://api.jquery.com/jQuery.getJSON/#comment-75080188
这应该有效:
var url = "http://api.justin.tv/api/stream/list.json";
$.ajax({
url: url,
dataType: 'jsonp',
data: { channel: "scvrush1" },
success: function(data) { alert(data); },
jsonp: "jsonp"
});
答案 1 :(得分:0)
如justin.tv REST API docs中所述,URL需要将回调指定为?jsonp=?
(其中第二个问号代表jQuery自动生成的回调名称)。在jQuery中,设置jsonp
参数:
var url = "http://api.justin.tv/api/stream/list.json";
$.ajax({
url: url,
dataType: 'jsonp',
data: { channel: "scvrush1" },
success: function(data) { alert(data); },
jsonp: 'jsonp'
});