Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails中带有“/”和“.”字符的select_标记的OnChange问题_Javascript_Ruby On Rails_Html Select - Fatal编程技术网

Javascript Rails中带有“/”和“.”字符的select_标记的OnChange问题

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

我有一个select_标签rails,它加载了一个带有“/”和“.”字符的select值

select标记的onchange使用window.location重定向页面,该页面使用带有select标记值的连接url

这些是我试图隔离问题的东西

调用警报javascript以显示连接的值。 将urlencode添加到传递的值中。 将urlencode的值硬编码到windows.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>
但是,由于各种模糊和恼人的原因,在Apache和IIS中在路径中包含%2F往往会很麻烦;最好避免

在任何情况下,选择重定向页面的标记都是坏消息,不应该真正使用。除了要求JS工作之外,它们不方便在新选项卡、书签链接等中打开,它们会中断键盘导航,因为onchange会立即启动,因此无法选择其他选项,它们会中断后退按钮,因为当您返回页面时,表单值会被记住,因此,由于onchange不会启动,因此您不能再次更改为转发同一页面

选择导航是一种不可信的技术。今天,你可以尝试在点击时弹出一个充满简单链接的窗口

location.href= 'http://www.example.com/things/'+encodeURIComponent(v)+'/view';

http://www.example.com/things/123.%2F/view