次のような 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 が望ましい)。
- ソリューションはクロスブラウザーで動作しますか?