Javascript Rails中带有“/”和“.”字符的select_标记的OnChange问题
我有一个select_标签rails,它加载了一个带有“/”和“.”字符的select值 select标记的onchange使用window.location重定向页面,该页面使用带有select标记值的连接url 这些是我试图隔离问题的东西 调用警报javascript以显示连接的值。 将urlencode添加到传递的值中。 将urlencode的值硬编码到windows.location,奇迹般地,它正在工作。Javascript Rails中带有“/”和“.”字符的select_标记的OnChange问题,javascript,ruby-on-rails,html-select,Javascript,Ruby On Rails,Html Select,我有一个select_标签rails,它加载了一个带有“/”和“.”字符的select值 select标记的onchange使用window.location重定向页面,该页面使用带有select标记值的连接url 这些是我试图隔离问题的东西 调用警报javascript以显示连接的值。 将urlencode添加到传递的值中。 将urlencode的值硬编码到windows.location,奇迹般地,它正在工作。 提前谢谢 没有代码很难说,或者确实是一个问题!,但一般来说,当您从文本值构建UR
提前谢谢 没有代码很难说,或者确实是一个问题!,但一般来说,当您从文本值构建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>
但是,由于各种模糊和恼人的原因,在Apache和IIS中在路径中包含%2F往往会很麻烦;最好避免
在任何情况下,选择重定向页面的标记都是坏消息,不应该真正使用。除了要求JS工作之外,它们不方便在新选项卡、书签链接等中打开,它们会中断键盘导航,因为onchange会立即启动,因此无法选择其他选项,它们会中断后退按钮,因为当您返回页面时,表单值会被记住,因此,由于onchange不会启动,因此您不能再次更改为转发同一页面
选择导航是一种不可信的技术。今天,你可以尝试在点击时弹出一个充满简单链接的窗口
location.href= 'http://www.example.com/things/'+encodeURIComponent(v)+'/view';
http://www.example.com/things/123.%2F/view