本文用戶登錄的簡(jiǎn)單點(diǎn)贊功能,主要使用了Ajax,配置
2021-08-12
本文基于簡(jiǎn)單的like函數(shù),無(wú)需用戶登錄,主要使用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,
],
],
注意:如果系統(tǒng)是用pecl下載的,那么上面配置中對(duì)應(yīng)的值要改成。如果不是本地環(huán)境添加,作者不會(huì)報(bào)錯(cuò)。當(dāng)然,還是要看個(gè)人本地或者生產(chǎn)環(huán)境的配置。
use Illuminate\Support\Facades\Redis;
您可以查看手冊(cè)以了解如何使用它。
點(diǎn)贊的基本原理和實(shí)現(xiàn)思路
原理:用戶點(diǎn)贊后,會(huì)通過(guò)ajax向后臺(tái)發(fā)起請(qǐng)求,后臺(tái)先檢查用戶是否點(diǎn)贊了(取key值,喜歡為1,不點(diǎn)贊是0).返回對(duì)應(yīng)的狀態(tài)碼對(duì)于js.BTW,如果添加用戶登錄等,那么當(dāng)前用戶喜歡后會(huì)生成一個(gè)直接判斷用戶是否已經(jīng)喜歡過(guò),不需要后臺(tái)查詢數(shù)據(jù)庫(kù),提高響應(yīng)速度。
實(shí)現(xiàn)思路:在點(diǎn)贊頁(yè)面的控制器中將當(dāng)前點(diǎn)贊狀態(tài)綁定到視圖php點(diǎn)贊功能實(shí)現(xiàn)php點(diǎn)贊功能實(shí)現(xiàn),通過(guò)視圖中的js監(jiān)控點(diǎn)贊按鈕。點(diǎn)擊后會(huì)訪問(wèn)后臺(tái)邏輯頁(yè)面進(jìn)行邏輯處理。
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' => '取消點(diǎn)贊','count' => 0];
} else {
Redis::set("click",1);
return ['status' => 1,'msg' => '點(diǎn)贊成功','count' => 1];
}
}
<script type="text/javascript">
$(function($) {
var event = $("#like").click(function () {
$.ajax({
url : "api/islike"
}).success(function (data1) {
if(data1.status) {
alert("點(diǎn)贊成功");
$("#count").text('');
$("#count").text(data1.count);
} else {
alert("Yummy" + data1.msg);
$("#count").text('');
$("#count").text(data1.count);
}
});
});
})
script>
需要注意的是,如果代碼中使用了$.post,可能會(huì)出現(xiàn)[%]之類的錯(cuò)誤。