首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从JSON访问last.fm

从JSON访问last.fm
EN

Stack Overflow用户
提问于 2019-12-13 14:52:26
回答 2查看 195关注 0票数 0

我对JavaScript非常陌生,已经寻找了一段时间的解决方案,但没有成功。我正在尝试使用Last.fm接口来检索我账户上当前正在播放的曲目。这就是我到目前为止所知道的:

代码语言:javascript
复制
<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密钥。

EN

回答 2

Stack Overflow用户

发布于 2019-12-13 15:35:36

看起来你应该使用onreadystatechange来捕获响应,而不是onload。

示例:

代码语言:javascript
复制
request.onreadystatechange = function() {
  if (this.status == 200) {
    console.log(this.responseText);
  }
};

您可以在此处阅读有关XMLHttp请求的更多信息:https://www.w3schools.com/xml/ajax_xmlhttprequest_send.asp

票数 1
EN

Stack Overflow用户

发布于 2019-12-13 16:28:38

我用测试帐户检查了你的代码,它工作正常。所以你可能会得到空的结果,让我们添加一些检查:

代码语言:javascript
复制
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);  
    } 
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59317500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档