当用户使用select字段更改类别时,我只想在视图上显示具有该类别的请求 - 并使用AJAX请求执行此操作。我想将从Controller返回的对象传递给AJAX的成功处理程序到视图($ requests变量,如下面的代码所示),以及视图更新显示的请求。
正确地将数据返回到AJAX的成功处理程序,因为我可以控制对象,但它不会更新$ requests变量。
我如何实现这一点,我在这里缺少什么?
显示来自数据库
的请求的视图@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;
}
答案 0 :(得分:1)
您的template
刀片是php,而ajax来自client side
javascript。
因此,如果您想要显示某些内容,则需要使用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);
}
答案 1 :(得分:0)
可能这样吗?
if($request->ajax()){
return response()->json(['ajax']);
}