我正在使用Codeigniter设计一些数据的搜索功能。
我的搜索模型如下所示:
class Search_Model extends CI_Model {
public function get_results($search_terms = false) {
// Build query
foreach ($search_terms as $field => $value) {
$this->db->like("{$field}", $value);
}
// Execute query
$query = $this->db->get('exams');
// Return results
return $query->result_array();
}
}
搜索控制器方法如下所示:
public function results() {
$search_terms = array(
'first_name' => $this->input->get('first_name', TRUE),
'last_name' => $this->input->get('last_name', TRUE),
'exam_name' => $this->input->get("exam_name", TRUE)
);
$data['title'] = "Search Results";
$data['exams'] = $this->search_model->get_results($search_terms);
$this->load->view('templates/header.php', $data);
$this->load->view('exams/index.php', $data);
$this->load->view('templates/footer.php');
}
搜索正在按预期方式进行,但是如果我仅搜索“名字”,我想清理出现如下所示的URL:
search/results?first_name=tim&last_name=&exam_name=
如何删除URL中未使用的那些额外参数?
在标题中包含jquery。然后添加此脚本。
<script>
$(document).ready(function(){
$('#myform').submit(function(event){
event.preventDefault();
var url = $(this).attr('action')+'?';
var first = false;
var second = false;
if($('input[name="first_name"]').val()){
url += 'first_name='+$('input[name="first_name"]').val();
first = true;
}
if($('input[name="last_name"]').val()){
if(first){
url += '&';
}
url += 'last_name='+$('input[name="last_name"]').val();
second = true;
}
if($('input[name="exam_name"]').val()){
if(second){
url += '&';
}
url += 'exam_name='+$('input[name="exam_name"]').val();
}
window.location.replace(url);
});
});
</script>
(我尚未运行此脚本,所以让我知道您是否遇到语法错误或其他错误。)最后将结果函数更改为此,
public function results() {
$search_terms = array();
if(isset($_GET['first_name'])){
$search_terms['first_name'] = $this->input->get('first_name', TRUE);
}
if(isset($_GET['last_name'])){
$search_terms['last_name'] = $this->input->get('last_name', TRUE);
}
if(isset($_GET['exam_name'])){
$search_terms['exam_name'] = $this->input->get('exam_name', TRUE);
}
$data['title'] = "Search Results";
$data['exams'] = $this->search_model->get_results($search_terms);
$this->load->view('templates/header.php', $data);
$this->load->view('exams/index.php', $data);
$this->load->view('templates/footer.php');
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句