gor*_*tde 4 javascript ajax url encoding ruby-on-rails
通常 rails 会神奇地解码所有params. 现在我得到了一个 javascript,它执行params="value="+encodeURIComponent('ab#cd');然后调用http://server/controller?value=ab%23cd. 如果我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
Run Code Online (Sandbox Code Playgroud)
如果请求是带有查询字符串的 POST,则不会对其进行解码:
POST http://server/controller?value=ab%23cd
On the server this will generate params['value'] as ab%23cd
Run Code Online (Sandbox Code Playgroud)
如果请求是带有数据参数的 POST,它将对其进行解码:
POST http://server/controller
data: value=ab%23cd
On the server this will generate params['value'] as ab#cd
Run Code Online (Sandbox Code Playgroud)
我怀疑您看到此问题是因为您在POST请求中包含查询字符串而不是GET请求,因此 Rails 没有解码查询字符串。
| 归档时间: |
|
| 查看次数: |
2319 次 |
| 最近记录: |