使用Last.fm API时,XMLHttpRequest会提供无效状态

时间:2013-07-01 12:58:22

标签: javascript api xmlhttprequest last.fm

我正在尝试将scrobble支持集成到Ubuntu Touch的音乐应用程序中,但我遇到了一些困难,因为我似乎无法使会话密钥正常工作。

在request()中,我在第53行得到“错误:无效状态”。看起来last.fms API没有正确回答,也没有正确的状态,但我是XMLHttpRequest的新手,所以我不确定怎么了。

代码:http://pastebin.com/Aa6DVUA1

1 个答案:

答案 0 :(得分:1)

您使用完整的网址而不是单个查询参数执行encodeURIComponent,从而导致类似https%3A%2F%2Fws.audioscrobbler.com%2F2.0%2F%3Fmethod%3Dartist.getsimilar%26artist%3DKiss...的内容显然不是有效的网址。有关示例,请参阅here

其次,您对XMLHttpRequest的使用是错误的,XHR是异步操作的,但您从未为您的请求定义回调函数。在请求实际完成之前,将在调用xhr.readyState后立即查询xhr.statussend()。有关如何使用XHR,请参阅here

PS:为什么不使用JavaScript的现有API包装器之一,即http://lastfm.felixbruns.de/javascript-last.fm-api/或至少jQuery来处理XHR?

PPS:您的身份验证请求不起作用,因为您需要在帖子正文中提交参数而不是查询字符串,有关详细信息,请参阅this forum post