【问题标题】:Ajax POST method converts my "+" value in a string to " " why?Ajax POST 方法将字符串中的“+”值转换为“”,为什么?
【发布时间】:2010-01-19 13:16:09
【问题描述】:

我不明白为什么在 ajax 帖子中“+”号转换为“”。请解释一下?

【问题讨论】:

    标签: javascript ajax


    【解决方案1】:

    使用encodeURIComponent() 函数将您的数据转换为请求的有效编码数据:

    xhr.open("POST", url, true);
    xhr.send(encodeURIComponent(postdata));
    

    【讨论】:

    • 这会破坏数据。您需要分别编码每个组件。一次性编码整个postdata 将转换所有具有特殊含义的=&
    【解决方案2】:

    这就是 URL 编码的工作原理。如果你想要一个加号,那就是 %2B,但你真的应该对发送到服务器的数据进行转义或编码。在here 中输入“a+b c”。

    【讨论】:

      【解决方案3】:

      "+" 是 url 编码的空格符号。因此,当您的帖子数据被解码时,“+”将转换为空格。

      【讨论】:

        【解决方案4】:

        这是因为URL Encoding 将空格转换为+,因为空格在 URL 中无效。

        通常字符会转换为 % 后跟两个十六进制数字,但使用 + 而不是 %20 会使 URL 更具可读性。

        如果您将+ 编码为%2B,那应该可以工作。

        【讨论】:

          【解决方案5】:

          您可能在 URL 中使用了+ 符号,它被正确地转换为空格,因为+ 是空格字符的 URLEncoded 表示。

          在您输入 URL 的任何值上运行 escape() 以将其转换为 URL 编码形式。

          【讨论】:

            【解决方案6】:

            这只是标准的 url 编码。加号在服务器上转换为空格。如果你想传递一个加号,你需要将它转义为 %2b。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-03-11
              • 2016-02-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-03-28
              • 1970-01-01
              相关资源
              最近更新 更多