我正在CodeIgniter项目中创建一个搜索页面。提交时,表单调用控制器函数,通过模型函数获取数据,并将结果数组传递给视图
问题是当我刷新结果页面时,表单正在重新提交,因为$_POST数据仍然在请求头中。
下面是我的表单的代码:
<!--form-->
<form id="find" action="<?php echo base_url()?>search/find" method="post">
<input type="text" name="search_key" class="tb4" id="search_key" placeholder="Search here"/>
<input type="button" value="search"/>
</form>
下面是我的控制器的代码:
/*
* function for fetching search results
* @param void
* @return void
*/
public function find()
{
$data['search_result']=$this->search_model->search($this->input->post('search_key'));
$this->load->view('template/header');
$this->load->view('pages/search_result',$data);
$this->load->view('template/footer');
}
我不能用redirect来代替加载视图,因为我必须将结果数组$data传递给视图。
4条答案
按热度按时间gzszwxb41#
尝试重定向到自身
yduiuuwa2#
简单的解决方案是在表单中隐藏时间戳字段。
处理表单时,将此时间戳保存在会话中,
在处理表单之前,检查两个时间戳是否匹配
8hhllhi23#
如果你想避免重新提交,那么请在保存后重定向到相同的控制器上,就像这样。它可以使用会话来解决。如果有任何POST表单提交,
即
sycxhyv74#
请使用以下内容: