[英]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.