Множественный поиск в реальном времени Laravel с использованием AJAX - PullRequest
0 голосов
/ 18 июня 2020

Может ли кто-нибудь помочь мне выяснить, что не так с моим кодом?

Я пытаюсь выполнить поиск в 2 формах, используя AJAX

вот мой код

Blade

$(document).ready(function(){

 load_data();

 function load_data(orderno = '', jobno= '')
 {
  $.ajax({
   url:"{{ route('live_search.action') }}",
   method:'GET',
   data:{orderno:orderno,jobno:jobno},
   dataType:'json',
   success:function(data)
   {
    $('tbody').html(data.table_data);
    $('#total_records').text(data.total_data);
   }
  })
 }

 $(document).on('keyup', '#search', function(){
  var orderno = $(this).val();
  var jobno = $(this).val();
  load_data(orderno,jobno);
 });


 $(document).on('keyup', '#searchkanban', function(){
  var orderno = $(this).val();
  var jobno = $(this).val();
  load_data(orderno,jobno);
 });



});
</script> 

и это мой контроллер

    {
      if($request->ajax())
      {
          $output = '';
          $query = $request->get('orderno');
          $query2 = $request->get('jobno');


          if($query != '' && $query2 == '')
          {
            $data = DB::table('scankanban')
              ->where('sk_orderNo', 'like', '%'.$query.'%')

              ->orderBy('id', 'asc')
              ->get();

          }

          else if($query != '' && $query2 != '')
          {
            $data = DB::table('scankanban')
              ->where('sk_orderNo', 'like', '%'.$query.'%')
              ->Where('sk_jobNo', 'like', '%'.$query2.'%')

              ->orderBy('id', 'asc')
              ->get();

          } 
          else // get all if not found
          {
            $data = DB::table('scankanban')
              ->orderBy('id', 'asc')
              ->get();
          }

          $total_row = $data->count();

          if($total_row > 0)
          {
              foreach($data as $row)
              {
                $output .= '
                <tr>
                <td>'.$row->sk_orderNo.'</td>
                <td>'.$row->sk_jobNo.'</td>
                <td>'.$row->sk_orderKanban.'</td>
                <td>'.$row->sk_scanID.'</td>
                <td>'.$row->sk_status.'</td>
                </tr>
                ';
              }
          }
          else
          {
              $output = '
              <tr>
                <td align="center" colspan="5">No Data Found</td>
              </tr>
              ';
          }
          $data = array(
              'table_data'  => $output,
              'total_data'  => $total_row
          );

          echo json_encode($data);
        }
    } 
  1. Я могу получить все данные, это означает, что код else работает
  2. Когда я введите форму #search, я могу получить поиск по запросу.
  3. Когда я набрал форму #search и form # search kanban, результатом была пустая таблица, например, не найденная. Иногда получаются данные, но неверные данные. Я обновил этот код с https://www.webslesson.info/2018/04/live-search-in-laravel-using-ajax.html. Раньше я использовал только одну форму поиска, теперь я хочу использовать две формы поиска.

Заранее спасибо

1 Ответ

0 голосов
/ 18 июня 2020

Это правильный код. Спасибо @bravemaster. Моя ошибка только в # formname

 $(document).on('keyup', '#search', function(){
 var orderno = $("#search").val();
 var jobno = $("#searchkanban").val();
 load_data(orderno,jobno);
 });


 $(document).on('keyup', '#searchkanban', function(){
 var orderno = $("#search").val();
 var jobno = $("#searchkanban").val();
 load_data(orderno,jobno);
 });
...