Когда пользователь меняет категорию с полем выбора, я хочу показывать только запросы с этой категорией в представлении - и делать это, используя запрос AJAX. Я хочу передать объект, возвращаемый с контроллера контроллера AJAX в представление (переменная $ request, как показано в приведенном ниже коде), и для просмотра, чтобы обновить отображаемые запросы.
Данные возвращаются в обработчик успеха AJAX правильно, так как я могу console.log объект, но он не обновляет переменную $ request.
Как мне это достичь, и чего мне здесь не хватает?
Представление, которое показывает запросы от БД
@extends('layouts.app')
@section('content')
{{-- Requests --}}
<div class="container">
<div class="row requests-row">
<div class="col-md-12">
<h2>New requests</h2>
<select name="category" class="form-control category">
<option value="" disabled selected>Choose a category...</option>
<option value="Electronics and Computers">Electronics and Computers</option>
<option value="Hardware">Hardware</option>
</select>
<hr>
<p class="block"></p>
@foreach ($requests as $request)
@include('components.requests')
@endforeach
</div>
</div>
</div>
@endsection
Запрос AJAX
$('.category').change(function() {
$.ajax({
method: "GET",
url: "/category",
data: $(this).serialize(),
success: function(data) {
console.log(data);
return data;
},
error: function(data){
console.log("Error: " + data);
},
});
});
Контроллер на бэкэнд, который обрабатывает запрос AJAX
public function changeCategory(Request $request)
{
$posts = Post::where('category', $request->category)->get();
return $posts;
}
Платформа template
- php, а ajax - с javascript на client side
.
Поэтому, если вы хотите отобразить что-то, вам нужно использовать javascript
для этого.
Возможно, что-то вроде
success: function(data) {
var posts = '';
$.each(data, function(index, post) {
posts += '<div class="post">' + post.title + '</div>';
});
$('.requests-row .col-md-12').prepend(posts);
}
Может быть, это так?
if($request->ajax()){
return response()->json(['ajax']);
}
category
на текущую страницу, и зациклить переменную$posts
в вашем шаблоне