我正在尝试获取艺术家的bandID
var my_url = 'http://api.bandcamp.com/api/band/3/search?key=snaefellsjokull&name=metallica';
$.ajax({
'url' : my_url,
'type':"GET",
success: function(res){
var bandId = res.result[0].bandId;
console.log(bandId);
}
});
但我总是得到405错误,不允许使用此方法。
我也试过这些:
$.getJSON(my_url, function(res){
var bandId = res.result[0].bandId;
findDisco(bandId);
})
和
var abc= $.parsejson(my_url);
abc.res.result[0].bandId;
如果你在导航栏中执行url,它会获取json ..并且我用json lint验证它。我想我正在做一个非常愚蠢的错误..有人可以帮忙吗?
提前感谢!!
答案 0 :(得分:0)
首先,您需要使用JSONP(因为您从其他域中获取,正如我在评论中所述),这是受支持的:
参数。有三个参数适用于每个函数调用:
密钥 - 每次通话都必须包含您的开发人员密钥 debug - 可选参数,指示API以更易读的格式返回JSON blob的文本,包括空格和换行符。
回调 - 如果包含此参数,则响应将使用具有指定回调函数名称的JSONP格式。
其次,您需要访问正确的字段。例如。它是res.results
而不是res.result
和band_id
而不是bandId
:
<强>响应强>
对于单个band id,响应是具有以下项目的哈希。对于批处理模式,响应是将请求的带ID映射到其信息块的哈希映射。
band_id - 乐队的数字ID 名称 - 乐队的名字。这可能并不是唯一的,特别是如果乐队对他们的名字感到害羞 子域名 - 乐队的子域名。这在所有乐队中都是独一无二的 url - 乐队的主页。
offsite _url - 乐队的备用主页,而不是Bandcamp。
全部来自documentation you linked to。
这有效:
var my_url = 'http://api.bandcamp.com/api/band/3/search?key=snaefellsjokull&name=metallica&callback=?';
$.ajax({
'url': my_url,
'type': "GET",
'dataType': 'jsonp',
success: function(res) {
var bandId = res.results[0].band_id;
console.log(bandId);
}
});