Laravel 中点赞功能实现

本文建立于没有用户登录的简单点赞功能,主要使用了Ajax,Redis

配置

  • 首先需要根据官网的指南下载好predis
$ composer require predis/predis
  • 然后在database.php中配置好redis
'redis' => [

    'client' => 'predis',

    'cluster' => false,

    'default' => [
        'host' => env('REDIS_HOST', 'localhost'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,
    ],

],
 
 
  • 1

注意: 如果系统用pecl下载了redis,那么上面配置中的client对应的值应该改成phpredis。笔主在本地环境下不加上client也是不会报错的,当然还是要看个人本地或者生产环境下的配置了。

  • 最后要在对应的控制器下使用redis
use Illuminate\Support\Facades\Redis;

Redis的使用方式可自行查询手册

点赞的基本原理以及实现思路

原理:在用户点赞之后会通过Ajax向后台发起请求,后台首先检测用户是否已经点赞(从Redis中取键值,点赞为1,未点赞为0)。返回对应的状态码给js。BTW,如果加入了用户登录之类的,那么在当前用户点赞之后生成一个cookie来直接判断用户是否已经点赞,就不需要后端再查询数据库,提高响应速度。

实现思路:在点赞页的控制器中把当前的点赞情况绑定到视图中,视图中通过js监控点赞按钮,如果点击那么就访问后端逻辑页面来进行逻辑处理。

class IndexController extends Controller
{
    public function index() 
    {
        $allClick = Redis::get("click");

        return view('index',['click' => $allClick]);
    }

    public function isLike()
    {
        $click = Redis::get("click");
        if($click) {
            Redis::set("click",0);
            return ['status' => 0,'msg' => '取消点赞','count' => 0];
        } else {
            Redis::set("click",1);
            return ['status' => 1,'msg' => '点赞成功','count' => 1];
        }
    }
 
 
  • 1
<script type="text/javascript">

    $(function($) {
        var event = $("#like").click(function () {
            $.ajax({
                url : "api/islike"
            }).success(function (data1) {
                if(data1.status) {
                    alert("点赞成功");
                    $("#count").text('');
                    $("#count").text(data1.count);
                } else {
                    alert("Yummy" + data1.msg);
                    $("#count").text('');
                    $("#count").text(data1.count);
                }
            });
        });
    })
</script>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
这里要注意的是如果 jQuery代码中使用 $.post可能会出现 [object%object]这种错误,比较重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值