![](/img/trans.png)
[英]Rails update record through Ajax with select_tag and onchange
[英]OnChange problem with select_tag with '/' and '.' characters in Rails
我有一个select_tag(rails),它用'/'和'。加载了选择值。 字符。
select标记的onchange使用连接的url和select标记的值重定向页面(使用window.location)。
这些是我试图解决问题的方法。
提前致谢。
不用代码就很难说(或者实际上是一个实际的问题!),但是一般来说,当您从文本值构建URL时,您应该在客户端调用encodeURIComponent,而不是尝试在服务器端对其进行编码。 例如。
<select id="foo">
<option value="123./">123./</option>
<option value="456./">456./</option>
</select>
<script type="text/javascript">
document.getElementById('foo').onchange= function() {
var v= this.value;
location.href= 'http://www.example.com/thing?foo='+encodeURIComponent(v);
};
</script>
但是,两者都没有.
nor /
是查询参数中的特殊字符,因此在这种情况下忘记对它们进行编码实际上不会造成问题。 如果我们谈论的是URL的路径部分,那么/
是特殊的,必须进行编码:
location.href= 'http://www.example.com/things/'+encodeURIComponent(v)+'/view';
http://www.example.com/things/123.%2F/view
但是,由于各种晦涩和令人讨厌的原因,在Apache和IIS中将%2F包含在路径中往往很麻烦。 最好避免。
在任何情况下,重定向页面的选择标签都是个坏消息,不应真正使用。 除了要求JS完全工作之外,它们还很不方便(没有打开新标签页,书签链接等),而且破坏了键盘导航(因为onchange被立即触发,因此无法选择其他选项)和它们破坏了后退按钮(因为当您返回页面时,将记住表单值,因此您将无法再次切换到同一页面,因为onchange不会触发)。
导航选择是一种信誉不良的技术。 今天,您可以改为尝试使用一个包含简单链接的<div>
弹出窗口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.