【问题标题】:How to call API in JavaScript with # symbol in URI?如何在 URI 中使用 # 符号在 JavaScript 中调用 API?
【发布时间】:2019-03-27 13:00:32
【问题描述】:

我想从 JavaScript 调用 REST API。

这是我尝试过的:

var mainURI = '<MyAPIURI>';
var mainURIEncoded = encodeURI(mainURI);

var mainRequest = new XMLHttpRequest()
mainRequest.open('GET', mainURIEncoded, true)

mainRequest.onload = function () {
    var data = JSON.parse(this.response)
}

我得到这个错误:

未找到与请求 URI 'MyAPIURI(Cut off at '#')'匹配的 HTTP 资源

我的 URI 中有一个“#”符号,问题似乎是我的 mainURIEncoded 字符串在“#”处被截断。

任何帮助表示赞赏。

【问题讨论】:

  • encodeURI() 不会改变 # 字符。
  • 哈希没有发送到服务器。它只是一个客户端表示。
  • 一般来说,你不应该encodeURI()整个URL。您应该使用encodeURIComponent() 对参数值进行编码。在您的情况下,假设您的 URL 是“myhost/api/action?action=#someParam”,则只有 #someParam 操作需要编码。显示您的实际网址,以便我们提供更多信息。
  • 在 URI 语法中,# 标记应该发送到服务器的片段的开始。它由浏览器处理。如果您希望 # 成为发送到服务器的内容的一部分,则必须使用 encodeURIComponent() 逐段编码 URI。

标签: javascript rest api


【解决方案1】:

我的解决方案是在使用 encodeURI()encodeURIComponent() 后将所有 '#' 替换为 '%23'。

请参阅有关该问题的有用的 cmets。

【讨论】:

    猜你喜欢
    • 2020-04-15
    • 2011-08-07
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 2013-01-01
    • 1970-01-01
    相关资源
    最近更新 更多