我该如何在laravel withe ajax中返回许多喜欢



这是我的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();
}

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

在您的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);
});

相关内容

  • 没有找到相关文章

最新更新