视频投票之每日一票-jquery.cookie.js篇

Posted zy_dream

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视频投票之每日一票-jquery.cookie.js篇相关的知识,希望对你有一定的参考价值。

需求:不论是游客还是评委进入系统,每日只能对两类视频中的一个视频进行一次投票(点赞)

解决过程:

听到最后这个需求的时候,我就想,甲方是不是把这个系统当作了微信公众号的那些投票,我这是赤果果的 web 系统啊,和那些微信公众号能相提并论吗?不能。

一开始我的切入点是,获取那些访问用户的 ip,并记录保存。然后在数据库进行数据过期删除操作。

然而,难度在于1.在自己本地不能进行多用户访问获取 ip 的操作;2.mongo 数据库是可以设置过期时间自动删除列数据,但有局限且我自己尝试并没有成功

后来,明白了要从 cookie 入手的,只有这样才能做到设置 cookie 存在的时间为一天,以及投票行为的保留

jquery.cookie.js 为一把利器,度娘搜一下,前辈们的教学都很清楚。

我这里应用的是,当点击投票按钮之后,设置唯一的 cookie,只要再次点击任何投票按钮之后,判断这个唯一的 cookie 是否为空即可。

% for v in video1 %
                $("#zan- v.id ").click(function () 
                    if ( $.cookie("grade1") != null)
                        alert('今日已投票,请退出');
                    
                    else 
                        if (this.name == "iconfont zan") 
                            this.innerhtml = "<i class='iconfont unzan'></i>";
                            this.name = "iconfont unzan";

                            var likes =  v.like_num  +1;
                            var url = " url_for('grade.make_likes', id=project.id) ";
                            var data_dic = 
                                'like': likes,
                                'video': ' v.id '
                            ;
                            $.ajax(
                                type: 'POST',
                                url: url,
                                data: JSON.stringify(data_dic),
                                contentType: 'application/json; charset=UTF-8',
                                dataType: 'json',
                                success: function (data) 
                                    window.history.back();
                                
                            );
                            $.cookie("grade1", "weikeshipin", expires:1);
                            alert("投票成功");
                        
                    
                );


以上是关于视频投票之每日一票-jquery.cookie.js篇的主要内容,如果未能解决你的问题,请参考以下文章

跟踪用户投票(每个主题一票,即 Reddit)

EOS源码分析投票系统

创世纪游戏黄金分割比

51CTO学院讲师评优,我期待您的宝贵一票!

51CTO学院四周年优秀讲师评选中,需要您的宝贵一票

UVaLive 4452 The Ministers' Major Mess (TwoSat)