You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何通过Ajax实现点赞后返回点赞数量

实现点赞后实时更新点赞数的方案

我来帮你搞定这个实时更新点赞数的需求,其实只需要在现有代码基础上做几处小修改就行,分后端和前端两部分来调整:

第一步:修改后端控制器,返回当前总点赞数

你的AdsController.php里的likePost方法已经能成功插入点赞数据了,现在需要在保存后统计该内容的总点赞数,然后以JSON格式返回给前端:

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

    // 统计当前内容的总点赞数
    $totalLikes = Like::where('ad_id', $request->id)->count();
    // 返回JSON格式的点赞数数据
    return response()->json(['totalLikes' => $totalLikes]);
}

第二步:在视图中添加点赞数展示元素

你需要在点赞按钮旁边加一个专门显示点赞数的元素,并且给它绑定对应的内容ID,这样前端才能精准找到要更新的元素:

<!-- 假设你的内容ID是$ad->id,调整成你实际的变量名 -->
<button class="like" data-id="{{ $ad->id }}">点赞</button>
<span class="like-count" data-id="{{ $ad->id }}">{{ $ad->likes->count() }}</span> 人已赞

第三步:修改前端AJAX逻辑,更新页面点赞数

现在要修改app.blade里的AJAX代码,添加成功回调函数来更新页面上的点赞数,同时还要处理Laravel的CSRF验证和重复点击的问题:

$('.like').click(function(event) { 
    event.preventDefault(); // 防止按钮触发默认的表单提交行为
    var $likeBtn = $(this);
    var adId = $likeBtn.data('id'); 

    $.ajax({ 
        url: "{{route('post.like','')}}/"+adId, 
        method: 'POST', // 点赞操作建议用POST请求
        headers: {
            // 带上Laravel的CSRF令牌,避免请求被拦截
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        success: function(response) {
            // 根据内容ID找到对应的点赞数元素,更新数值
            $('.like-count[data-id="' + adId + '"]').text(response.totalLikes);
            // 可以给按钮设置成已点赞状态,防止用户重复点击
            $likeBtn.prop('disabled', true).text('已点赞');
        },
        error: function() {
            // 处理请求失败的情况,给用户提示
            alert('点赞失败,请稍后重试');
        }
    });
});

额外注意:确保页面有CSRF令牌

Laravel默认会拦截没有CSRF令牌的POST请求,所以要确保你的页面头部已经包含了CSRF元标签:

<meta name="csrf-token" content="{{ csrf_token() }}">

这样操作之后,用户点击点赞按钮,数据插入数据库的同时,页面上的点赞数就会实时更新啦~

内容的提问来源于stack exchange,提问作者souma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:08:07