Ajax搜索表不起作用/无法获取数据-Codeigniter

时间:2019-10-14 06:32:26

标签: php ajax codeigniter

我不能简单地获取表上的任何数据,我试图清除代码,但仍然无法正常工作

控制器-我不确定这是正确的还是我仍然缺少某些东西

 function fetch()
  {
    $data  = $this->level_model->fetch_data();

    echo $this->load->view('levels', ['data' => $data], TRUE );
  }

查看

<select class='form-input input-lg col-md-6' name="search_text" id="search_text">
     <?php 
       foreach ($courses as $row) {
           echo '<option value="'.$row->course.'">'.$row->course.'</option>';
       }
     ?>
 </select>

表格

     <table class="table table-striped table-bordered" style="width:100%;">
                    <thead> 
                      <tr>
                        <th scope="col">Course</th>
                        <th scope="col">Action</th>
                      </tr>
                    </thead>
                    <tbody id="showdata">

                    </tbody>
       </table>

模型-所以在这里查询,以便我可以匹配数据并获取它。

 function fetch_data($query)
 {
  $this->db->select("*");
  $this->db->from("levels");
  if($query != '')
  {
   $this->db->like('course_year', $query);
  }
  $this->db->order_by('id', 'ASC');
  return $this->db->get();
 }

AJAX / JAVASCRIPT 我不太确定我的Ajax是否正确,请检查

<script>
  $(document).ready(function(){
     load_data();

     function load_data(query)
     {
      $.ajax({
       url:"<?php echo base_url(); ?>levels/fetch",
       method:"POST",
       data:{query:query},
       success:function(data){
                 var html = '';
                 var i;
                  for(i=0; i<data.length; i++){
                    html += '<tr>'+
                              '<td>'+data[i].course_year+'</td>'+
                              '<td>'+
                              '<a class="btn btn-primary item-edit" data="'+data[i].id+'"" href="javascript:;"><i class="fa fa-edit"></i> Edit  </a> | '+
                              '<a class="btn btn-danger item-delete" data="'+data[i].id+'"" href="javascript:;"><i class="fa fa-remove"></i> Delete</a></td>'+
                            '</tr>';
                  }
              $('#showdata').html(html);
           }
      })
     }

     $('#search_text').change(function(){
      var search = $(this).val();
      if(search != '')
      {
       load_data(search);
      }
      else
      {
       load_data();
      }
     });
    });
    </script>

2 个答案:

答案 0 :(得分:0)

在加载文档时,您正在调用load_data函数,而没有在此处将值传递给query参数。

<script>
  $(document).ready(function(){
     load_data();

您应该在此处给它一个默认值

    <script>
  $(document).ready(function(){
     load_data();

     function load_data(query='')
     {
      $.ajax({
       url:"<?php echo base_url(); ?>levels/fetch",
       method:"POST",
       data:{query:query},
       success:function(data){
                 var html = '';
                 var i;
                  for(i=0; i<data.length; i++){
                    html += '<tr>'+
                              '<td>'+data[i].course_year+'</td>'+
                              '<td>'+
                              '<a class="btn btn-primary item-edit" data="'+data[i].id+'"" href="javascript:;"><i class="fa fa-edit"></i> Edit  </a> | '+
                              '<a class="btn btn-danger item-delete" data="'+data[i].id+'"" href="javascript:;"><i class="fa fa-remove"></i> Delete</a></td>'+
                            '</tr>';
                  }
              $('#showdata').html(html);
           }
      })
     }

     $('#search_text').change(function(){
      var search = $(this).val();
      if(search != '')
      {
       load_data(search);
      }
      else
      {
       load_data();
      }
     });
    });
    </script>

您也不会向模型传递任何数据。

function fetch()
{
    $data  = $this->level_model->fetch_data(
                 $_POST['query'];
             );

    echo $this->load->view('levels', ['data' => $data], TRUE );
}

答案 1 :(得分:0)

尝试如下更改控制器的fetch方法:

function fetch()
{
    $data  = $this->level_model->fetch_data(
                 $this->input->post('query');
             );

    echo $this->load->view('levels', ['data' => $data], TRUE );
}