我对JavaScript非常陌生,已经寻找了一段时间的解决方案,但没有成功。我正在尝试使用Last.fm接口来检索我账户上当前正在播放的曲目。这就是我到目前为止所知道的:
<html>
<body>
<p>this is an experiment!</p>
<script type="text/javascript">
const request = new XMLHttpRequest();
request.open('GET', 'http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user='+[MY_USERNAME]+'&api_key='+[MY_API_KEY]+'&format=json');
request.send();
request.onload = () => {
if (request.status === 200) {
console.log("Success");
var song = JSON.parse(request.response).recenttracks.track[0].name;
console.log(song);
}
};
request.onerror = () => {
console.log("error")
};
</script>
</body>
</html> 当我在浏览器中打开文件时,我在控制台中得到一个错误。如有任何帮助,我们将非常感谢:)
更新:当我给它提供直接的URL时,一切都能正常工作,例如,我拿出+s,然后直接放入API密钥。
发布于 2019-12-13 15:35:36
看起来你应该使用onreadystatechange来捕获响应,而不是onload。
示例:
request.onreadystatechange = function() {
if (this.status == 200) {
console.log(this.responseText);
}
};您可以在此处阅读有关XMLHttp请求的更多信息:https://www.w3schools.com/xml/ajax_xmlhttprequest_send.asp
发布于 2019-12-13 16:28:38
我用测试帐户检查了你的代码,它工作正常。所以你可能会得到空的结果,让我们添加一些检查:
request.onload = () => {
if (request.status === 200) {
// look at the response
console.log(request.response);
const recenttracks = JSON.parse(request.response).recenttracks;
if (!recenttracks.track || !recenttracks.track.length) {
console.log('track is empty');
return;
}
const song = recenttracks.track[0].name;
console.log(song);
}
};https://stackoverflow.com/questions/59317500
复制相似问题