Таблица поиска Ajax не работает / не удается получить данные - Codeigniter - PullRequest
1 голос
/ 14 октября 2019

Я не могу просто извлечь какие-либо данные из своей таблицы, я пытался очистить свой код, но все еще не работает, вот мой код

Контроллер - я не уверен, правильно ли это илия все еще что-то упускаю

 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 голосов
/ 14 октября 2019

Попробуйте изменить свой контроллер fetch метод, как показано ниже:

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

    echo $this->load->view('levels', ['data' => $data], TRUE );
}
0 голосов
/ 14 октября 2019

Когда документ загружается, вы вызываете функцию 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 );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...