0

这是我的 app.blade

$('.like').click(function(event) {
    var id = $(this).data('id');
    $.ajax({
      url: "{{route('post.like','')}}/"+id,
    })
});  

这是我的 AdsController.php

public function likePost(Request $request){  
    $likePost=new Like;
    $likePost->user_id=Auth::user()->id;
    $likePost->ad_id= $request->id;
    $likePost->save();
}

当我点击喜欢按钮时,数据会插入到喜欢表中,但我还想在视图中返回喜欢的数量

4

1 回答 1

3

在您的likePost函数中,保存后Like然后执行以下操作之一:

如果要返回用户的点赞数:

$likes = Like::where('user_id', Auth::user()->id)->count();

如果您想返回广告的点赞数:

$likes = Like::where('ad_id', $request->id)->count();

如果要返回所有喜欢的数量:

$likes = Like::count();

然后,由于它是 AJAX 请求,您需要在likePost函数中返回 JSON 响应: https ://laravel.com/docs/5.6/responses#json-responses

return response()->json([
    'likes' => $likes
]);

在你的 JavaScript 中,获取这样的响应:

$.ajax({
    url: "{{route('post.like','')}}/"+id,
}).done(function(response) {
    var likes = response.likes; <-- num of likes
});

--编辑--

要在视图中显示,只需在要显示数字的 html 元素中添加一个类或一个 id,例如:

<div id="numberOfLikes"></div>

然后,您可以使用从 AJAX 获得的响应设置它的内部 html 内容:

$.ajax({
    url: "{{route('post.like','')}}/"+id,
}).done(function(response) {
    var likes = response.likes;
    $('#numberOfLikes').html(response.likes);
});
于 2018-04-27T14:39:40.837 回答