繁体   English   中英

PHP Laravel:自动完成搜索404(未找到)

[英]PHP Laravel : Autocomplete Search 404 (Not Found)

我正在构建一个laravel应用程序,其中必须在应用程序中使用自动完成搜索。

我的路线:

Route::get('/autocomplete',[
        'uses'=>'CourseController@autocomplete',
        'as'=>'autocomplete'
        ]); 

我的控制器:

 public function autocomplete(Request $request)
    {

        $item = $request->input(['searchname']);
        $results=array();
        $queries = DB::table('courses')
        ->where('name', 'LIKE', '%'.$term.'%')  
        ->take(5)->get();

        foreach ($queries as $data) {
          $results[]=['id'=>$data->id,'value'=>$data->name];
        }
    return Response::json($results);
    }

我的查看页面:

 {{ Form::open(['action' => ['UserController@autocomplete'], 'method' => 'GET']) }}
    {{ Form::text('searchname', '', ['id' =>  'searchname', 'placeholder' =>  'Enter name'])}}
    {{ Form::submit('Search', array('class' => 'button expand')) }}
{{ Form::close() }}


    <script type="text/javascript">
    jQuery(document).ready(function($) {
      $('#searchname').autocomplete({
            source:  "/autocomplete" ,
            minlength:1,
            autofocus:true,
            select:function(event,ui){
              $("searchname").val(ui.item.value);
            }
      });
      });
    </script>

因此,当我搜索商品而不是获取商品名称时,我在控制台中收到以下错误消息:

GET http://localhost/autocomplete?term=tree 404 (Not Found)

谁能帮助我找到解决方案?

自动完成的source就是问题所在。 您正在传递相对于服务器文档根目录的路径,而不是站点内的路由。 而且,您不需要表格,因为搜索是异步完成的。

你可以试试这个

<input type="text" id="searchname" placeholder="Enter name"/>

<script type="text/javascript">
  jQuery(document).ready(function($) {
     $('#searchname').autocomplete({
        source: "{{ route('autocomplete') }}" ,
        minlength:1,
        autofocus:true,
        select:function(event,ui){
          $("searchname").val(ui.item.value);
        }
     });
  });
</script>

编辑:我假设您网站的根目录位于http://localhost/your-site ,而不仅仅是localhost 另外,在Routes中,您将使用CourseController然后在形式中编写UserController 由于无论如何都在命名路由,因此最好使用route助手来生成正确的URL。


最后,在控制器中,您应该输入名称“ term”,而不是“ searchname”。

$term = $request->term;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM