本文用户登录的简单点赞功能,主要使用了Ajax,配置
2021-08-12
本文基于简单的like函数,无需用户登录,主要使用Ajax,
配置
$ composer require predis/predis
'redis' => [
'client' => 'predis',
'cluster' => false,
'default' => [
'host' => env('REDIS_HOST', 'localhost'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
注意:如果系统是用pecl下载的,那么上面配置中对应的值要改成。如果不是本地环境添加,作者不会报错。当然,还是要看个人本地或者生产环境的配置。
use Illuminate\Support\Facades\Redis;
您可以查看手册以了解如何使用它。
点赞的基本原理和实现思路
原理:用户点赞后,会通过ajax向后台发起请求,后台先检查用户是否点赞了(取key值,喜欢为1,不点赞是0).返回对应的状态码对于js.BTW,如果添加用户登录等,那么当前用户喜欢后会生成一个直接判断用户是否已经喜欢过,不需要后台查询数据库,提高响应速度。
实现思路:在点赞页面的控制器中将当前点赞状态绑定到视图php点赞功能实现php点赞功能实现,通过视图中的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];
}
}
<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>
需要注意的是,如果代码中使用了$.post,可能会出现[%]之类的错误。