Laravel Ajax поиск выдает всю коллекцию в ответ на запрос после того, как ввод очищен из поля ввода - PullRequest
1 голос
/ 06 августа 2020

В ответе не должно быть результатов, поскольку я очищаю поля ввода для функции поиска, но вместо этого выдает полную коллекцию. Он отлично работает, когда есть ввод, но как только я его очищаю, отображается вся коллекция. Вот класс контроллера Laravel.

 public function search(Request $request)
    {  if($request->ajax()){

        $results = DB::table('PROPERTY_TAGS')->where('TAG_NAME','LIKE','%'.$request->search."%")->get();
        $output='';
        if(count($results)>0){
            foreach($results as $result){
                $output.='<p>'.$result->TAG_NAME.'</p>';
            }

        }else{
            $output="<p>no data found</p>'";

        }
         return $output;
     }
}

Вот мой HTML с шаблоном лезвия laravel:

<div class="row">
      <div class="col s9 "> <input type="text" id="search" name="search" placeholder="Search" /></div>
      <div class="col s3"><a href="sass.html"><i class="material-icons">search</i></a></div>
      <div class="col s12">
            <b>Ex: </b><i>Beltola, Zoo Road</i>

            <!-- Suggestions will be displayed in below div. -->
            <div id="display"></div>
     </div>
</div>

Вот сценарий:

<script type="text/javascript">

$.ajaxSetup({
headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});

$('#search').on('keyup',function(){
    $value=$(this).val();
    $.ajax({
        type : 'GET',
        url : '/search',
        data:{'search':$value},
        success:function(data){
            if(data == '\0'){
                $('#display').text('');
            }
               $('#display').html(data).show();
               //alert(data.success);
                }
    });
});

</script>

1 Ответ

0 голосов
/ 06 августа 2020

Вам не нужно делать запрос Xhr, если строка пуста. Можно добавить небольшую проверку, как показано ниже.

$('#search').on('keyup',function() {
  var value = $(this).val();

  //ADD THIS... ++
  if (value.length === 0) {
    //clear results
    $('#display').text('');
    //no query, just return.
    return;
  }
  //++

  $.ajax({
    type : 'GET',
    url : '/search',
    data:{'search': value},
    success:function(data) {
      if (data == '\0') {
        $('#display').text('');
      }
      $('#display').html(data).show();
      //alert(data.success);
    }
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...