使用 AJAX 的多个实时搜索 Laravel

Posted

技术标签:

【中文标题】使用 AJAX 的多个实时搜索 Laravel【英文标题】:Multiple Live Search Laravel using AJAX 【发布时间】:2020-10-08 07:10:17 【问题描述】:

谁能帮我找出我的代码出了什么问题?

我正在尝试使用 AJAX 搜索 2 种形式

这是我的代码

刀片

$(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);
        
     
    我可以获取所有数据,这意味着 else 代码正在运行 当我输入表单#search 时,我可以获得查询搜索。 当我输入表单#search 和表单#searchkanban 时,结果是空表,就像找不到一样。有时得到数据但错误的数据。我从https://www.webslesson.info/2018/04/live-search-in-laravel-using-ajax.html 更新了这段代码。之前只使用 1 个搜索表单,现在我想使用 2 个搜索表单。

提前致谢

【问题讨论】:

ordernojobno 都来自$(this).val()。我认为你在这里犯了一个错误。 天哪,谢谢你救了我@bravemaster。我用#formname 更改$(this).val() 【参考方案1】:

这是正确的代码。感谢@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);
 );

【讨论】:

以上是关于使用 AJAX 的多个实时搜索 Laravel的主要内容,如果未能解决你的问题,请参考以下文章

具有多个模型的 Laravel ajax 实时搜索查询

PHP Ajax 实时搜索只返回一个结果

如何使用 jQuery ajax 实时搜索 Django 中的模型?

在 Rails 中使用 will_paginate 和 AJAX 实时搜索和 jQuery

django - Ajax 实时搜索,我做错了啥?

使用数据库中的数据进行 Ajax 实时搜索