我对Javascript很新,我不确定我在这里做错了什么。
我的目标是通过SoundCloud API检索指定轨道(带有id)的相关SoundCloud轨道列表。 在做我的XMLHttpRequest时遇到了这个错误:
请求时没有'Access-Control-Allow-Origin'标头 资源。因此不允许来源“http://127.0.0.1:49458” 访问。响应的HTTP状态代码为500。
所以从搜索中我发现,它必须与CORS Header有关,SoundCloud用它来使GET请求成为可能。
查看它所说的API文档,错误代码500会在SoundCloud站点上出现内部服务器错误。但我现在已经尝试了一整天,我不敢相信我只是变得不走运。
这是我的请求功能:
function getRelated(soundcloudID) {
var xhr = new XMLHttpRequest();
xhr.open('GET', "https://api.soundcloud.com/tracks/" + soundcloudID +"/related?client_id=1dff55bf515582dc759594dac5ba46e9", false);
xhr.addEventListener("load", function() {
filterBubble.push(JSON.parse(xhr.response));
}, false);
xhr.send();
}
我知道这不是执行此类请求的最佳方式,我应该将其更改为回调函数。我会这样做,但我很确定这与它不起作用无关。
该请求也不适用于SoundCloud(https://api-v2.soundcloud.com/charts?kind=trending&genre=soundcloud:genres:all-music&client_id=1dff55bf515582dc759594dac5ba46e9&q=)上的热门顶级歌曲。
现在有趣的是,我通过API搜索请求没有问题。 https://api.soundcloud.com/tracks?client_id=1dff55bf515582dc759594dac5ba46e9&q=的XMLHttpRequests工作得很好。
我在这里做错了什么?
或者我只是愚蠢,这是因为我正在使用localhost进行测试?
答案 0 :(得分:0)
我相信您可能使用无效的soundcloudId
来调用API。看一下/tracks
documentation on the SoundCloud docs,有一个示例曲目ID。当我用它调用你的函数时,一切都会成功。
因此,请使用以下ID 13158665
:
function getRelated(soundcloudID) {
var xhr = new XMLHttpRequest();
xhr.open('GET', "https://api.soundcloud.com/tracks/" + soundcloudID + "/related?client_id=1dff55bf515582dc759594dac5ba46e9", false);
xhr.addEventListener("load", function() {
console.log(xhr.response)
}, false);
xhr.send();
}
// works
getRelated('13158665')
// error you described
getRelated('random id')