Laravel 搜索路线

Laravel Route for Search

我在 laravel 上试用了关于 Live Search

的教程

但它在 homepage(index)

我想访问它 localhost/laravel/public/search

这是控制器

class SearchController extends Controller
{
public function index()
{
return view('search.search');
}

public function search(Request $request)
{
   if ($request->ajax())
       $output ="";
       $orderinfo=DB::table('tb_order')->where('shipcustomername','LIKE','%' . $request->search.'%' )
                                       ->orWhere('orderId','LIKE','%' .$request->search. '%')->get();

   if ($orderinfo)
   {

       foreach ($orderinfo as $key =>$orderinfo ){


       $output.='<tr>' . 
               '<td>' .$orderinfo->orderId  .'</td>' .
               '<td>' .$orderinfo->email  .'</td>' .
               '<td>' .$orderinfo->subsource  .'</td>' .

               '</tr>';   

       }

       return Response($output);

   }

和我的路线

Route::get('/' ,'SearchController@index');
Route::get('/search' ,'SearchController@search');

在我的资源文件夹中 我有文件夹搜索,它包含 search.blade.php

 <div class="container">
        <div class="row">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3>Order Info</h3>               
            </div>
            <div class="panel-body">
                <div class="form-group">
                    <input type="text" class="form-control" id="search" name="search"></input>                 
                </div>
                <table class="table table-bordered table-hover ">
                    <thead>
                        <tr>
                            <th>OrderID</th>
                            <th>Email</th>
                            <th>SubSource</th>
                        </tr>
                    </thead>
                    <tbody>

                    </tbody>
                   </table>       
                </div>
        </div>
    </div>
        <script type="text/javascript">
            $('#search').on('keyup',function(){
               $value=$(this).val();
               $.ajax({

                  type : 'get',
                  url  : '{{URL::to('search')}}',
                  data : {'search':$value},
                  success:function(data){
                      $('tbody').html(data);                   
                  }

               });
            });
        </script>

</body>

我知道这是 index 的路由,

 Route::get('/' ,'SearchController@index');

但如果尝试将其更改为

 Route::get('search' ,'SearchController@index');

我收到错误 500

正确的路由方式是什么,这样它就不会使用索引

谢谢

很有可能您正在发送空数据尝试更改此设置:

$value=$(this).val();

对此:

var value = $('#search').val();

如果不是,那么您也没有提交数据,也没有添加表格:

{{ Form::open(array('method'=>'GET','class'=> 'col-md-6','url' => '/search', 'id'=>'searchform')) }}

<div class="form-group">
   <input type="text" class="form-control" id="search" name="search"></input>                 
</div>

  {{ Form::close() }}

将您的 ajax 请求更改为:

 $('#searchform').on('submit', function(e) {
       e.preventDefault(); 
       var search = $('#search').val();
       $.ajax({
           type: "GET",
           url: {{URL::to('search')}},
           data: {search:search}
           success:function(data){
                      $('tbody').html(data);                   
                  }
       });
   });

如果不是那么:

APP_DEBUG in .env 设置为 true 因为请求是 ajax,使用 chrome 并按 f12,转到网络选项卡 -> 单击错误 -> 预览选项卡,如果它只是用空白屏幕说错误,那么也许你应该 chmod 775(写权限)然后再试一次