我在 laravel 上尝试本教程关于实时搜索
但它在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');
在我的资源文件夹中 我有文件夹搜索,它包含搜索.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>
我知道这是索引的路线,
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(写入权限(并重试