【问题标题】:Pass & as a value in url将 & 作为 url 中的值传递
【发布时间】:2018-08-23 08:49:28
【问题描述】:

我在 url 中传递一个值,但我的一些值包含 & 作为一个值,这是一个值:

 Transport, storage, communication & services related to broadcasting

当我将此值作为参数 url 传递时,如下所示:

 test?search=Tertiary&year=2013-14&rain_fall_type=Transport,%20storage,%20communication%20&%20services%20related%20to%20broadcasting&compare=None&views=stackedColumn

我的问题是如何通过 url 传递特殊字符并按原样获取该值。

【问题讨论】:

  • & 符号是 URL 保留字符,因此是 URL 编码的。要获取原始值,您需要对其进行 URL 解码(例如,您可以在 javascript 中使用 decodeURIComponent()
  • 所以没有办法,所以我需要对我的字符串进行编码并将其作为编码值传递并解码该值。我的问题是如何?
  • 您问题中的那个 URL(Transport,%20storage, 等...)已经被编码。要解码 Ruby 中的值,请查看 unescape 方法 ruby-doc.org/stdlib-2.5.1/libdoc/uri/rdoc/URI/…

标签: javascript ruby-on-rails url parameters


【解决方案1】:

您可以在 rails 中使用URI.encode('Transport, storage, communication & services related to broadcasting', /\W/) 对特殊字符进行编码。

解码URI.decode(encoded_value) 的值就可以了。

encoded_value = URI.encode('Transport & services', /\W/) # "Transport%20%26%20services"
URI.decode(encoded_value)                                # "Transport & services"

如果你想在 javascript 中编码相同的字符串,你可以使用encodeURIComponent:

var encodedString = encodeURIComponent('Transport & services')

【讨论】:

  • 我从 javascript 传递这个值,所以我怎样才能在 javascript 中编码这个字符串并在 rails 中捕获那个参数然后解码。
  • 我已经更新了答案。您可以在 javascript 中使用encodeURIComponent,并使用URI.decode 解码rails 中的值。当然后者是不必要的,因为 rails 会为您处理并解码字符串。
猜你喜欢
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多