我一段时间以来一直在寻找类似的问题,但我找不到真正有助于解决问题的方法。
使用Laravel 5.4。
所以我有一个资源控制器及其索引方法,它返回一个附加了一些数据的视图。 然后我想从返回的视图中发出一个ajax请求,这是一个搜索请求。
e.preventDefault();
let q = $('#inputserver').val();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/servers",
type: 'GET',
data: {'data': q},
success: function(response){
console.log('Successo');
}
})
对于如何构造资源控制器的方法应该调用索引方法,我想在其中识别是否有Ajax请求传入。 如果我这样做,我将使用Eloquent Model中的查询搜索搜索表单检索到的数据,当然我只想显示匹配的结果。
这是我的控制器代码:
if(!$request->ajax()){
$colonna = 'id';
$servers = Server::orderBy($colonna, 'desc')->paginate(10);
return view('servers.index', array('servers' => $servers));
}
else{
$servers= Server::where('name', '=', $request->data)->paginate(10);
return view('servers.index', array('servers' => $servers));
}
问题是没有任何事情发生,所以甚至没有考虑ajax请求,有人可以帮助我吗?我几乎可以肯定这个问题是我忘记或不考虑的一些显而易见的事情。 提前感谢您,如果您需要更多信息,我会进行编辑。
修改
这是我有Route::resource('servers', 'ServerController');
EDIT2:
我很抱歉 ids 是意大利语,但我当然在使用jQuery时正确选择它们。
<div class="input-group mb-2 mr-sm-2 mb-sm-0">
<div class="input-group-addon">
<span>
<i class="fa fa-search"></i>
</span>
</div>
{{Form::text('search', null, array('class' => 'form-control', 'id' => 'inputserver' , 'placeholder' => 'Cerca..'))}}
<span class="input-group-btn">
<button class="btn btn-default" type="button" id="cercaserver">Go!</button>
</span>
答案 0 :(得分:0)
刀片文件很乱。尝试创建一个打开的窗体并关闭窗体并使按钮提交类型。并尝试将您的ajax更改为:
$(document).ready(function() {
$('#cercaserver').on('submit', function (e) {
e.preventDefault();
var input = $('#inputserver').val();
$.ajax({
type: "GET",
url: './servers',
data: {input: input},
});
});
});
确保加载jquery。
答案 1 :(得分:0)
你什么意思都没有发生?当ajax请求被触发时,控制台中显示了什么?
此外,您还是要返回一个视图,您可能想要返回结果的json数组?
return $servers;
Laravel会自动将其转换为JSON响应
https://laravel.com/docs/5.4/responses#creating-responses
或者如果你想具体:
return response()->json($servers);
https://laravel.com/docs/5.4/responses#json-responses
编辑:
我想我已经知道了这个问题,在您的资源控制器函数index
中,是否有一个名为$request
的参数?它可能不存在,并且肯定会抛出500内部服务器错误,因为您在条件中使用它。