使用AJAX在Codeigniter中使用选择框过滤表上的数据

时间:2015-02-18 11:22:04

标签: php jquery mysql ajax codeigniter

使用AJAX过滤表格上的数据时出现问题。我在页面上有一个选择框和表格。我想使用选择框过滤表格中的数据。例如,如果用户选择价值' Ganjil'在选择框上,表格只显示包含数据' Ganjil'。

的行

AJAX脚本:

<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();   
}

当我选择选择框表的值时,什么都不显示。

1 个答案:

答案 0 :(得分:1)

第一个解决方案:在您访问键值对时在控制器中使用$key = $this->input->post('key');。所以在AJAX中调用$ key是Key。您无法在代码中访问$this->input->post('semester');之类的javascript变量学期。

第二个解决方案

在ajax电话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);
}