侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

thinkPHP实现基于ajax的评论回复功能

ThinkPHP  /  管理员 发布于 7年前   403

本文实例讲述了thinkPHP实现基于ajax的评论回复功能。分享给大家供大家参考,具体如下:

控制器代码:

count(); //获取评论总数    $this->assign('num',$num);    $data=array();    $data=$this->getCommlist();//获取评论列表    $this->assign("commlist",$data);    $this->display('index');  }  /**  *添加评论  */  public function addComment(){    $data=array();    if((isset($_POST["comment"]))&&(!empty($_POST["comment"]))){      $cm = json_decode($_POST["comment"],true);//通过第二个参数true,将json字符串转化为键值对数组      $cm['create_time']=date('Y-m-d H:i:s',time());      $newcm = M('comment');      $id = $newcm->add($cm);      $cm["id"] = $id;      $data = $cm;      $num = M('comment')->count();//统计评论总数      $data['num']= $num;    }else{      $data["error"] = "0";    }    echo json_encode($data);  }  /**  *递归获取评论列表  */  protected function getCommlist($parent_id = 0,&$result = array()){    $arr = M('comment')->where("parent_id = '".$parent_id."'")->order("create_time desc")->select();    if(empty($arr)){      return array();    }    foreach ($arr as $cm) {      $thisArr=&$result[];      $cm["children"] = $this->getCommlist($cm["id"],$thisArr);      $thisArr = $cm;    }    return $result;  }}

JavaScript代码:

$(function(){  //点击提交评论内容  $('body').delegate('.comment-submit','click',function(){    var content = $.trim($(this).parent().prev().children("textarea").val());//根据布局结构获取当前评论内容    $(this).parent().prev().children("textarea").val("");//获取完内容后清空输入框    if(""==content){      alert("评论内容不能为空!");    }else{      var cmdata = new Object();      cmdata.parent_id = $(this).attr("parent_id");//上级评论id      cmdata.content = content;      cmdata.nickname = "游客";//测试用数据      cmdata.head_pic = "/Public/images/default.jpg";//测试用数据      var replyswitch = $(this).attr("replyswitch");//获取回复开关锁属性      $.ajax({        type:"POST",        url:"/index.php/home/index/addComment",        data:{          comment:JSON.stringify(cmdata)        },        dataType:"json",        success:function(data){          if(typeof(data.error)=="undefined"){            $(".comment-reply").next().remove();//删除已存在的所有回复div            //更新评论总数            $(".comment-num").children("span").html(data.num+"条评论");            //显示新增评论            var newli = "";            if(cmdata.parent_id == "0"){             //发表的是一级评论时,添加到一级ul列表中             newli = "
  • "+data.nickname+""+data.create_time+"

    "+data.content+"

    回复
    • "; $(".comment-ul").prepend(newli); }else{ //否则添加到对应的孩子ul列表中 if('off'==replyswitch){//检验出回复关闭锁存在,即三级评论不再提供回复功能 newli = "
    • "+data.nickname+""+data.create_time+"

      "+data.content+"

      • "; }else{//二级评论的回复按钮要添加回复关闭锁属性 newli = "
      • "+data.nickname+""+data.create_time+"

        "+data.content+"

        回复
        • "; } $("li[comment_id='"+data.parent_id+"']").children("ul").prepend(newli); } }else{ //有错误信息 alert(data.error); } } }); } }); //点击"回复"按钮显示或隐藏回复输入框 $("body").delegate(".comment-reply","click",function(){ if($(this).next().length>0){//判断出回复div已经存在,去除掉 $(this).next().remove(); }else{//添加回复div $(".comment-reply").next().remove();//删除已存在的所有回复div //添加当前回复div var parent_id = $(this).attr("comment_id");//要回复的评论id var divhtml = ""; if('off'==$(this).attr("replyswitch")){//二级评论回复后三级评论不再提供回复功能,将关闭属性附加到"提交回复"按钮" divhtml = "
          提交回复"; }else{ divhtml = "
          提交回复"; } $(this).after(divhtml); } });})

          页面样式代码:

          .comment-filed{  width:640px;  margin:0 auto;}.comment-num{  text-align: right;  font-size:14px;}.div-txt-submit{  text-align:right;  margin-top:8px;}.comment-submit{  background-color:#63B8FF;  margin-top:15px;  text-decoration:none;  color:#fff;  padding:5px;  font-size:14px;}.txt-commit{  border:1px solid blue;  width:620px;  height: 60px;  padding: 10px;}.txt-reply{  width: 100%;  height: 60px;}.comment-filed-list{  margin-top:20px;}.comment-list{  margin-top:2px;  width:herit;  height:50px;  border-top:1px solid gray;}.comment-ul{  list-style:none;  padding-left:0;}.head-pic{  width:40px;  height:40px;}.cm{  position:relative;  top:0px;  left:40px;  top:-40px;  width:600px;}.cm-header{  padding-left:5px;}.cm-content{  padding-left:5px;}.cm-footer{  padding-bottom:15px;  text-align:right;  border-bottom: 1px dotted #CCC;}.comment-reply{  text-decoration:none;  color:gray;  font-size: 14px;}.children{  list-style:none;  background-color:#FAFAFA;  padding-left:0;  margin-left:40px;}.children-cm{  position:relative;  left:40px;  top:-40px;  width:90%;}

          页面布局代码:

              php评论及回复功能      
          {$num}条评论
          发表评论
          全部评论
          • {$data.nickname} {$data.create_time}

            {$data.content}

            回复
            • {$child.nickname} {$child.create_time}

              {$child.content}

              回复
              • {$grandson.nickname} {$grandson.create_time}

                {$grandson.content}

          sql语句:

          DROP TABLE IF EXISTS `t_comment`;CREATE TABLE `t_comment` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', `parent_id` int(11) NOT NULL COMMENT '上级评论id,若是一级评论则为0', `nickname` varchar(100) DEFAULT NULL COMMENT '评论人昵称', `head_pic` varchar(400) DEFAULT NULL COMMENT '评论人头像', `content` text COMMENT '评论内容', `create_time` datetime DEFAULT NULL COMMENT '评论或回复发表时间', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=148 DEFAULT CHARSET=utf8;

          页面布局少一个jquery.js请自行加上。

          更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

          希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

          您可能感兴趣的文章:

          • thinkPHP框架实现的无限回复评论功能示例
          • php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
          • PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
          • php实现评论回复删除功能
          • php无限级分类实现评论及回复功能


        • 上一条:
          php $_SESSION会员登录实例分享
          下一条:
          ThinkPHP5.0 图片上传生成缩略图实例代码说明
        • 昵称:

          邮箱:

          0条评论 (评论内容有缓存机制,请悉知!)
          最新最热
          • 分类目录
          • 人生(杂谈)
          • 技术
          • linux
          • Java
          • php
          • 框架(架构)
          • 前端
          • ThinkPHP
          • 数据库
          • 微信(小程序)
          • Laravel
          • Redis
          • Docker
          • Go
          • swoole
          • Windows
          • Python
          • 苹果(mac/ios)
          • 相关文章
          • thinkphp + mongodb项目中数据加载慢问题分析及解决(0个评论)
          • thinkphp6框架中封装redis操作类(0个评论)
          • thinkphp6框架中实现定时任务功能流程步骤(0个评论)
          • Thinkphp5.1框架中实现Session+Redis会话共享流程步骤(0个评论)
          • TP5框架版本5.0.10安全漏洞根据官方补丁修复,也是本站安全漏洞修复(0个评论)
          • 近期文章
          • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
          • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
          • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
          • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
          • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
          • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
          • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
          • Laravel从Accel获得5700万美元A轮融资(0个评论)
          • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
          • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
          • 近期评论
          • 122 在

            学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
          • 123 在

            Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
          • 原梓番博客 在

            在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
          • 博主 在

            佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
          • 1111 在

            佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
          • 2016-10
          • 2017-07
          • 2017-08
          • 2017-09
          • 2017-10
          • 2017-12
          • 2018-01
          • 2018-02
          • 2020-03
          • 2021-07
          • 2021-12
          • 2022-05
          • 2022-06
          • 2022-09
          • 2023-01
          Top

          Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

          侯体宗的博客