使用AJAX过滤表格上的数据时出现问题。我在页面上有一个选择框和表格。我想使用选择框过滤表格中的数据。例如,如果用户选择价值' Ganjil'在选择框上,表格只显示包含数据' Ganjil'。
的行<script>
var semester = $("#inputJenis").change(function(){
$.ajax({
type:"POST",
url:'<?php echo base_url("search/filter") ?>',
data:"key="+semester,
dataType:'json',
success:function(data){
$("#tableData").html(data);
},
error:function(XMLHttpRequest){
alert(XMLHttpRequest.responseText);
}
});
});
</script>
public function filter()
{
$this->load->helper('url');
$key = $this->input->post('semester');
if ( $key == 'Ganjil' ) {
$this->load->model('filter_model');
$data = $this->filter_model->getGanjil($key);
} else {
$this->load->model('filter_model');
$data = $this->filter_model->getGenap($key);
}
echo json_encode($data);
}
public function getGanjil($key)
{
$sql = "SELECT * FROM tahunajaran WHERE jenis = '$key'";
$data = $this->db->query($sql);
return $data->result_array();
}
public function getGenap($key)
{
$sql = "SELECT * FROM tahunajaran WHERE jenis = '$key'";
$data = $this->db->query($sql);
return $data->result_array();
}
当我选择选择框表的值时,什么都不显示。
答案 0 :(得分:1)
第一个解决方案:在您访问键值对时在控制器中使用$key = $this->input->post('key');
。所以在AJAX中调用$ key是Key。您无法在代码中访问$this->input->post('semester');
之类的javascript变量学期。
第二个解决方案:
url:'<?php echo base_url("search/filter/key/") ?>'+semester
中
使用$ key =&#39;&#39;作为控制器方法中的参数。
public function filter($key='')
因为您的控制器方法中没有可访问的$ key。您应该在控制器中访问作为参数。所以你可以在模型中使用它。在您的情况下,没有$ key作为控制器中的参数。
同样在您的代码中使用
$key = $this->input->post($key); as we access $key thru parameter.
-------------更新1 ----------
根据您的要求,AJAX调用
<script>
var semester = $("#inputJenis").change(function(){
$.ajax({
type:"POST",
url:url:'<?php echo base_url("search/filter/key/") ?>'+semester,
data:"key="+semester,
dataType:'json',
success:function(data){
$("#tableData").html(data);
},
error:function(XMLHttpRequest){
alert(XMLHttpRequest.responseText);
}
});
});
</script>
你的控制器应该是这样的 - &gt;
public function filter($key = '')
{
$this->load->helper('url');
if ( $key == 'Ganjil' ) {
$this->load->model('filter_model');
$data = $this->filter_model->getGanjil($key);
} else {
$this->load->model('filter_model');
$data = $this->filter_model->getGenap($key);
}
echo json_encode($data);
}