我有学校的页面列表,并使用CHECKBOX INPUTS搜索过滤器。
例如,一个标准是学校的城市。因此,当您提交过滤器表单时,URL如下所示: **
www.schools.com/schools/的城市%5B%5D = 1&安培;城市%5B%5D = 2及城市%5B%5D = 3及城市%5B%5D = 4
我想让它看起来像这样。
www.schools.com/schools/的 **?市[] = 1,2,3,4
基本上我需要解决两个问题:
1。如何通过带有漂亮url的数组传递具有相同名称的多个变量?
2.如何在URL中保留特殊字符(如“[”,“]”)?
我使用 Codeigniter 框架。 谢谢你们。
//编辑匿名
我想用这个简单的形式:
<form action="" method="get">
<input name="kraj[]" type="checkbox" value="1">
<input name="kraj[]" type="checkbox" value="2">
<input type="submit" value="send">
</form>
当用户检查两个输入时,将数据发送到url,如下所示:
的 example.com/?kraj [] = 1,2
不是这样的: example.com/?kraj [] = 1&amp; kraj [] = 2
我知道如何在获得所需的格式后处理它,但我不知道如何发送它。
答案 0 :(得分:2)
通过使用-
分隔值可以使URL看起来更好,因为特殊字符不会被更改。这对我来说非常有效,除了一些JavaScript之外,还应该使用$_GET
方法检查复选框:
<?php
$city_array = explode('-',$_GET['city']);
?>
<input type="checkbox" value="1" <?php if (isset($_GET['city']) && in_array('1', $city_array)) { echo 'checked="checked"'; } ?>/>
<input type="checkbox" value="2" <?php if (isset($_GET['city']) && in_array('2', $city_array)) { echo 'checked="checked"'; } ?>/>
<input type="checkbox" value="3" <?php if (isset($_GET['city']) && in_array('3', $city_array)) { echo 'checked="checked"'; } ?>/>
<input type="checkbox" value="4" <?php if (isset($_GET['city']) && in_array('4', $city_array)) { echo 'checked="checked"'; } ?>/>
<form method='GET' action='' id='form'>
<input name='city' type='hidden' value='' id='hidden'/>
</form>
<input type='submit' onclick='checkboxarray()'/>
<script>
function checkboxarray() {
var checked = [];
for (var i = 0; i < document.getElementsByTagName('input').length; i++) {
var checkbox = document.getElementsByTagName('input')[i];
if (checkbox.checked) {
checked.push(checkbox.value);
}
}
var checked = checked.toString().replace(/,/g,'-');
document.getElementById('hidden').value = checked;
document.getElementById('form').submit();
}
</script>
例如,新网址可能是:www.schools.com/schools/?city=1-4
。