javascript - Encodeuricomponent 在 rails 中解码它

标签 javascript ruby-on-rails ajax url encoding

通常 rails 神奇地解码所有 params。现在我得到了一个执行 params="value="+encodeURIComponent('ab#cd'); 的 javascript,然后调用 http://server/controller?value=ab%23cd。如果我在我的 Controller 中访问 params[:value],它包含 ab%23cd 而不是我期望的 ab#cd

如何解决?为什么 Rails 不自动解码这个参数?

最佳答案

Rails 使用以下逻辑“自动”处理参数。

如果请求是 GET 它将解码查询字符串中的任何内容:

GET http://server/controller?value=ab%23cd
  On the server this will generate params['value'] as ab#cd

如果请求是带有查询字符串的 POST,它不会对其进行解码:

POST http://server/controller?value=ab%23cd
  On the server this will generate params['value'] as ab%23cd

如果请求是带有数据参数的 POST,它将对其进行解码:

POST http://server/controller
  data: value=ab%23cd
  On the server this will generate params['value'] as ab#cd

我怀疑您看到这个问题是因为您在 POST 请求而不是 GET 请求中包含查询字符串,因此 Rails 没有解码查询字符串。

关于javascript - Encodeuricomponent 在 rails 中解码它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13038841/

相关文章:

用于验证数字是否以前导零开头的 Javascript 正则表达式

javascript - Uncaught ReferenceError : testString is not defined

ruby-on-rails - 无法为 rails 2.3.14 安装 libxml-ruby

java - jquery ajax 调用时在浏览器上显示的缓存数据

javascript - 在模态中选择 2 个功能问题

javascript - jQuery javascript 作用域问题

javascript - 在初始 HTML 页面上预取 HTML 内容以供将来请求

ruby-on-rails - 永远不要响应 xhrs 渲染布局

ruby-on-rails - Rails 3.1.1 和 Cucumber - 错误

ruby-on-rails - Rails 找不到 rake-10.5.0