【问题标题】:XMLHttpRequest gives Invalid state when using Last.fm API使用 Last.fm API 时 XMLHttpRequest 给出无效状态
【发布时间】:2023-03-18 03:50:01
【问题描述】:

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

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

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

【问题讨论】:

  • 第 53 行 xhr.status 的值是多少?
  • 我没有得到任何,只有“无效状态”
  • 嗯,您可以发布您执行的完整请求吗? (URL、标题等)
  • 其实只是一个被调用的URL。请求的所有代码都在那里,但我在这个中添加了类似艺术家的完整 URL:pastebin.com/H99h3eeY

标签: javascript api xmlhttprequest last.fm


【解决方案1】:

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

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

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

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

【讨论】:

  • 非常感谢!我已经尝试了很多事情——以及发送正文,但我在理解 Last.fm 的 API 指令方面确实有些困难。这也许会对我有所帮助。 PS。现有 API 包装器:“尚不支持乱码。”。这就是为什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
  • 1970-01-01
相关资源
最近更新 更多