zoukankan      html  css  js  c++  java
  • Ajax+jQuery+bootstrap+Java实现异步点赞功能,并限制点击次数

    在很多的网站上有很多不同的点赞,我不知道他们是怎么实现的,下面我来分享一下我写的点赞实现,共大家参考下,

    这是我在一个项目抽取的代码,可能有些样式会发生变化,但是功能不会影响。


    网页代码:

    这个是根据数据库中是否可以点赞来限制能不能点的,strlist是从java后台返回的一个请求。在这里取出点赞数和文章点赞的编号做为参数到Ajax上

    <span class="pull-right">
        <c:choose>
            <c:when test="${strlist.dzFlag==1}">
                <a href="javascript:void(0)" onclick="praise('${strlist.id}','${strlist.dzCount}')"
                class="btn btn-default btn-xs">
                    赞
                    <span id="praiseNo${strlist.id}">
                        ${strlist.dzCount}
                    </span>
                </a>
            </c:when>
            <c:otherwise>
                <a href="javascript:void(0)" class="btn btn-default btn-xs">
                    赞
                    <span id="strategyPraiseNo">
                        ${strlist.dzCount}
                    </span>
                </a>
            </c:otherwise>
        </c:choose>
    </span>

    Ajax请求的Js脚本:

    <script type="text/javascript">
        function praise(recordNo, praiseCount) {
            $.ajax({
                url: '${ctx}/country/pointPraise',
                type: 'POST',
                data: {
                    'recordNo': recordNo
                },
                dataType: "JSON",
                success: function(d) {
                    if (d.success) {
                        var strategyPraiseNo = parseInt(praiseCount) + 1;
                        $('#praiseNo' + recordNo).html(strategyPraiseNo)
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    bootbox.alert("无法连接服务器:" + textStatus);
                }
            });
        }
    </script>

    Java代码:

    Dao类接口层


    <pre name="code" class="java">/**
    	 * @Title: updateDzCount 
    	 * @Description:点击赞后更改赞的数量
    	 * @param mapNo 
    	 * @author CHENJH
    	 * @date 2015年6月27日
    	 */
    	public void updateDzCount(HashMap<String, Object> mapNo);
    
    

    Dao类实现层

            @Override
    	public void updateDzCount(HashMap<String, Object> mapNo) {
    		this.update("updateDzCount", mapNo);
    	}

    service类接口层

    /**
    	 * @Title: updateDzCount
    	 * @Description:点击赞后更改赞的数量
    	 * @param recordNo
    	 * @author CHENJH
    	 * @date 2015年6月25日
    	 */
    	public boolean updateDzCount(HashMap<String, Object> mapNo);

    service类实现层

    @Override
    	public boolean updateDzCount(HashMap<String, Object> mapNo) {
    		logger.info("***** BlogServiceImpl.updateDzCount() method begin*****");
    		boolean flag = true;
    		try {
    			blogDao.updateDzCount(mapNo);
    		} catch (Exception e) {
    			logger.error("------updateDzCount error:", e);
    			e.printStackTrace();
    			return false;
    		}
    		logger.info("***** BlogServiceImpl.updateDzCount() method end*****");
    		return flag;
    
    	}

    Action类处理层代码

    /**
    	 * @Title: pointPraise
    	 * @Description: 修改文章点赞
    	 * @author CHENJH
    	 * @date 2015年6月27日
    	 */
    	@SkipCheck
    	@Action("pointPraise")
    	public void pointPraise() {
    		String recordNo = getParam("recordNo");// 获取文章信息编号
    		HashMap<String, Object> mapNo = getSessionValue("recordNoMap");// 得到文章点赞集合
    		Boolean bool = false;
    		if (mapNo != null) {
    			if (mapNo.get(recordNo) == null) {// 判断集合中是否存在改编号点赞
    				mapNo.put(recordNo, recordNo);
    				bool = true;
    			}
    		} else {// 未进行点赞
    			mapNo = new HashMap<String, Object>();
    			mapNo.put(recordNo, recordNo);
    			setSessionAttr("recordNoMap", mapNo);
    			bool = true;
    		}
    		if (bool) {// 可以点赞
    			mapNo.put("recordNo", recordNo);
    			// 点赞更新值
    			bool = blogService.updateDzCount(mapNo);
    		}
    		outputJsons("success", bool);
    
    	}

    MyBatis3映射文件SQL语句

    <!--文章点赞后修改数量-->
    <update id="updateDzCount" parameterType="map">
    	 update TAB_攻略表 set
           	点赞次数=((select 点赞次数 from TAB_攻略表 where 记录编号 = #{recordNo,jdbcType=VARCHAR})+1)
        	where 记录编号 = #{recordNo,jdbcType=VARCHAR} 
    </update>


    注:项目采用Maven开发,

    this.update("updateDzCount", mapNo);
    上采用了封装的。
    




  • 相关阅读:
    H5测试
    【多线程】不懂什么是 Java 中的锁?看看这篇你就明白了!
    【spring】69道Spring面试题和答案
    【数据库】数据库面试知识点汇总
    【小技巧】老程序员总结的 40 个小技巧,长脸了~
    【springboot】集成swagger
    【springboot】集成Druid 作为数据库连接池
    【springboot】整合 MyBatis
    【权限管理】Spring Security 执行流程
    【权限管理】springboot集成security
  • 原文地址:https://www.cnblogs.com/skyheng/p/8853691.html
Copyright © 2011-2022 走看看