Ajax get request laravel 5.4 контроллер ресурсов

Я давно искал похожий вопрос, но не смог найти то, что действительно могло бы помочь моей проблеме.

Использование 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:

Мне жаль идентификаторы на итальянском языке, но я, конечно, выбираю их правильно при использовании 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

Решение

Файл блейда беспорядочный. Попробуйте создать открытую форму и закрыть форму и сделать кнопку отправки типа. И попробуйте изменить ваш AJAX на это:

$(document).ready(function() {
$('#cercaserver').on('submit', function (e) {
e.preventDefault();
var input = $('#inputserver').val();

$.ajax({
type: "GET",
url: './servers',
data: {input: input},

});
});
});

убедитесь, что вы загружаете jquery.

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, поскольку вы использовали ее в своем состоянии.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector