使用Codeigniter中的Ajax过滤表数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Codeigniter中的Ajax过滤表数据相关的知识,希望对你有一定的参考价值。

我无法使用Ajax过滤表数据。当我从下拉列表中选择BANK CREDIT时,它应该使用modeofpay(表格列)获取员工详细信息作为“BANK CREDIT”,当我选择NEFT时,它应该将modeofpay(表列)的员工详细信息显示为“NEFT”。截至目前,当我选择下拉时没有任何反应。

控制器:

public function filter($key = '')
{
  $this->load->helper('url');

  if ( $key == 'BANK CREDIT' ) {
    $this->load->model('JcMeetingExpense_model');
    $data = $this->JcMeetingExpense_model->getCredit($key);
  } 
  else 
  {
    $this->load->model('JcMeetingExpense_model');
    $data = $this->JcMeetingExpense_model->getNeft($key);
  }
  echo json_encode($data);
}

模型:

public function getCredit($key)
{
  $sql = "SELECT * FROM employee WHERE modeofpay = '$key'";
  $data = $this->db->query($sql);
  return $data->result_array();   
}

public function getNeft($key)
{
  $sql = "SELECT * FROM employee WHERE modeofpay = '$key'";
  $data = $this->db->query($sql);
  return $data->result_array();   
}

视图:

<script type="text/javascript">
  var paymode = $("#mode").change(function(){
    $.ajax({
      type:"POST",
      url:url:'<?php echo base_url("JcMeetingExpense/filter/key/") ? 
               >'+paymode,
      data:"key="+paymode,
      dataType:'json',
      success:function(data){
        $("#viewjcexpense").html(data);
      },
      error:function(XMLHttpRequest){
        alert(XMLHttpRequest.responseText);
      }
    });
  });
</script>

<select name="mode" id="mode" >
  <option value="BANK CREDIT">CREDIT</option>
  <option value="NEFT">NEFT</option>
</select>
答案

你的onchange活动有效吗?我们来看看吧

$("#mode").change(function(){
alert(1);
});

如果当你选择了一个选项时会显示警告,这意味着你的事件在工作,

现在,如果它工作正常让我们尝试使用ajax并做一点重新编码,这里我使用post方法

[查看]

$("#mode").change(function(){
     $.ajax({
                type  : 'POST',
                url   : '<?=base_url(); ?>JcMeetingExpense/filter/',
                data  : { key : $("#mode").val() },
                success : function(data){
                       console.log(data);//let's check on console what's response is 
                    }
                });
 })

[控制器]

public function filter()
{
  $this->load->helper('url');


    $this->load->model('JcMeetingExpense_model');
    $dataKey = $this->JcMeetingExpense_model->get_data_by_key();


  echo json_encode($datadataKey);
}

[模型]

 public function get_data_by_key()
    {
     //do post here let's say
     $key = $this->input->post("key");
// i looked your query is vulnerable to SQL Injection 
/*      $sql = "SELECT * FROM employee WHERE modeofpay = '$key'"; 
      $data = $this->db->query($sql);
      return $data->result_array();   */
      //so let's use query builder 
      $this->db->select("*");
      $this->db->from("employee");
      $this->db->where("modeofpay",$key);
      $q = $this->db->get();
      return $q->result_array();
    }

现在检查控制台中的响应

以上是关于使用Codeigniter中的Ajax过滤表数据的主要内容,如果未能解决你的问题,请参考以下文章

codeigniter php 和 jquery - 如何从多个表中获取数据并通过 ajax 返回

如何使用 CodeIgniter 中的 AJAX 函数更改网页的数据

Codeigniter- Ajax Codeigniter Ajax - 通过ajax返回不止一行

codeigniter 中的 Ajax 表单验证

使用ajax codeigniter php根据日期检索数据库值

使用jQuery AJAX请求CodeIgniter从Controller显示数据库中的数据到View而不刷新页面