我正在尝试使用Codeigniter 3.0将搜索表单实现到我的网站,并且我遇到了redirect()
方法的一些问题。
我想要做的是当我输入一些字符串并按Enter键时,它会对控制器执行发布请求,然后控制器将获取字符串并将当前网址重定向到{{1} }
所以,这是我的代码:
搜索表单:
http://example.com/search/string
获取搜索字符串并执行重定向的控制器:
<form action="/search" method="post" accept-charset="UTF-8">
config.php:
public function do_search() {
$search = $this->input->post('search');
log_message('debug', 'search: ' . $search);
if ($search) {
redirect('search/' . $search, 'refresh');
} else {
redirect('/', 'refresh');
}
}
另外,我的基本控制器上有以下代码:MY_Controller
$config['permitted_uri_chars'] = 'üÜöÖğĞıİəƏçÇşŞ a-z 0-9~%.:_\-';
现在,当我在搜索表单上键入“həə”时,它会重定向,但网址会变得像“hÉÉ”。如您所见,我正在我的控制器上记录搜索字符串,正确打印。 (如“həə”)。
我错过了什么吗?任何想法如何解决这个问题?
答案 0 :(得分:0)
非ascii支持是软件中的一般问题,在浏览器相关软件中是一个非常特殊的问题。你应该做的是,获取传入的值并具有一种逻辑并进行重映射。 Codeigniter具有内置重映射功能。
它被称为:
function _remap($method)
{
// here your logic
}
您可以在每个控制器中使用此功能。
小tipp:如果你支持多语言,那么你应该在每个请求中转移你的GET或POST或Cookie中的语言,并且有一种逻辑。否则你会遇到麻烦。
答案 1 :(得分:0)
我写了一个小的jQuery代码来进行重定向,它在我的情况下确实有效。
<HTMLQuestion xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2011-11-11/HTMLQuestion.xsd" >
<HTMLContent>
<![CDATA[
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script language = "javascript" type='text/javascript' >
$(document).ready(function()
{
alert("iFrame is ready");
});
</script>