我想要一个使用 Codeigniter 的 URL,如下所示:
example?type=1,2,3,4
我可以手动输入它,也可以导航到这样的 URL,系统工作正常。但是,我有一个使用 GET 的表单,我想在其中发布多个类型的值。我正在使用 Javascript 来加入输入。
<form action="example" method="GET" id="type-form">
<select multiple="multiple" name="_type[]" id="type-array-id-1">
<option value="1">Type 1</option>
<option value="2">Type 2</option>
<option value="3">Type 3</option>
<option value="4">Type 4</option>
<option value="5">Type 5</option>
</select>
<input type="hidden" name="type" id="type-comma-sep"/>
<input type="submit" value="Get" />
</form>
<script>
$("#type-form").bind("submit",function(){
var type_array = $("#type-array-id-1").val().join(",");
$("#type-array-id-1").val("");
$("#type-comma-sep").val(type_array);
});
</script>
我已经使用了其他一些 SO 问题的答案来让我走到这一步,但是当我提交我得到的表格时:
example?type=1%2C2%2C3%2C4
我的后端依赖于 URL 中的“,”。那么如何强制逗号进入 URL 呢?
我还尝试了 htaccess 重写(尽管甚至不确定这是正确的):
RewriteCond %{REQUEST_URI} ^([^\%2C]*)\%2C(.*)$
RewriteRule .* %1,%2 [R=301,L]
我尝试使用 encodeURIComponent(type_array) 和 encodeURI(type_array),但它从来没有产生任何影响。
我在 Codeigniter 中的设置如下:
$config['permitted_uri_chars'] = 'a-z 0-9~%.,:_\-';
在 system/libraries/input.php 中
if ( ! preg_match('/^[a-z0-9,:_\/-]+$/i', $str))
所以...
- 如何在 URL 中强制使用逗号(最好使用 Javascript)?
- 该解决方案是否可以跨浏览器工作?