zoukankan      html  css  js  c++  java
  • ajax 显示评论并制作翻页

    修改后台评论模型

      创建search方法

        

    //取出一件商品的评论
    public function search($goodsId,$pageSize=5)
    {
    //要做ajax翻页 所以要自己写

    $where['a.goods_id']=array('eq',$goodsId);
    //取出总的记录数
    $count=$this->where($where)->count();

    //计算总的页数
    $pageCount=ceil($count / $pageSize);

    //获取当前页
    $currentpage=max(1,(int)I('get.p',1); // >=1的整数
    //计算limit上的第一个参数:偏移量
    $offset=($currentpage-1)* $pageSize;

    //取数据
    $data = $this->alias('a')
    ->field('a.content,a.addtime,a.start,a.click_count,b.face,b.usernameCOUNT(c.id) reply_count')
    ->join('LEFT JOIN __MEMBER__ b ON a.member_id=b.id
    LEFT JOIN __COMMENT_REPLY__ c ON a.id=c.comment_id')
    ->where($where)
    ->order('a.id DESC')
    ->limit("$offset,$pageSize")
    ->group('a.id')
    ->select();


    return array(
    'data'=>$data,                                //返回评论数据和总页数【翻页的字符串由JS拼为了做AJAX的翻页】
    'pageCount'=>$pageCount,

    );
    }

     4.2控制器中添加一个方法

    //ajax获取评论
    public function ajaxGetPl()
    {
    $goodsId=I('get.goods_id');
    $model=D('Admin/Comment');
    $data=$model->search($goodsId,5);
    echo json_encode($data);
    }

    4.3 在页面中写JS请求这个方法获取数据

    /************ajax发表评论*************/
    $(".comment_btn").click(function(){
    //先接收表单中的数据 格式 : nametom&age=23
    var form = $("#comment-form");
    var formData=form.serialize();

    $.ajax({
    type:"POST",
    url:"<?php echo U('Comment/add'); ?>",
    data:formData, //表单中要提交的数据
    dataType:"json", //服务器返回的数据格式
    success:function(data)
    {
    if(data.status == 0)
    alert(data.info);

    else
    {
    //清空表单
    form.trigger("reset"); //触发表单的reset事件

    //用新发表的评论数据拼出一个显示的HTML字符串
    var html=' <div class="comment_items mt10 none"><div class="user_pic"><dl><dt><a href=""><img src="'+data.info.face+'" alt="" /></a></dt><dd><a href="">'+data.info.face+'</a></dd></dl></div><div class="item"><div class="title"><span>'+data.info.addtime+'</span><strong class="star star'+data.info.star+'"></strong></div><div class="comment_content">'+data.info.content+'</div><div class="btns"><a href="" class="reply">回复(0)</a><a href="" class="useful">有用(0)</a></div><div class="cornor"></div></div>';
    //把整个评论的字符串转化成jq的对象
    html = $(html);
    // 把拼好的评论放到页面中
    $("#comment_container").prepend(html);
    // 让导航条直接滚动第一个评论处
    $("body").animate({
    "scrollTop" : "750px"
    }, 1000, function(){
    html.fadeIn(2000);
    });
    }
    }

    });


    });

    /**************评论的缓存**************/

    var cache=[]; //每页的缓存 缓存到客户端浏览器的内存中

    //获取某一页缓存
    function getCache(page)
    {
    for(var i=0;i<cache.length;i++)
    {
    if(cache[i][0] == page)
    return cache[i];
    }

    return false;
    }

    /***********ajax获取某一页的评论************/
    function ajaxGetPl(page)
    {
    var c=getCache(page);
    if(c !==false)
    {
    $("#comment_container").html(c[1]);
    $('.page').html(c[2]);
    return;
    }
    $.ajax({
    type:"GET",
    url:"<?php echo U('Comment/ajaxGetPl?goods_id='.$info['id'],'',FALSE); ?>/P/"+page,
    dataType:"json",
    success:function(data)
    {
    //循环每个评论拼出HTML字符串放到页面中
    var html="";
    $(data.data).each(function(k,v){
    html+=' <div class="comment_items mt10 "><div class="user_pic"><dl><dt><a href=""><img src="'+v.face+'" alt="" /></a></dt><dd><a href="">'+v.face+'</a></dd></dl></div><div class="item"><div class="title"><span>'+v.addtime+'</span><strong class="star star'+v.star+'"></strong></div><div class="comment_content">'+v.content+'</div><div class="btns"><a href="" class="reply">回复('+v.reply_count+')</a><a href="" class="useful">有用('+v.click_count+')</a></div><div class="cornor"></div></div>';
    });
    //放到页面中,覆盖原数据

    $("#comment_container").html(html);

    //根据总的页数,拼出翻页字符串
    var pageString="";
    for(var i=0;i<=data.pageCount;i++)
    {
    if(page == i)
    var cls='class="cur"';
    else
    var cls='';
    pageString+='<a '+cls+'onclick="ajaxGetPl('+i+');" href="javascript:void(0);">'+i+'</a>';
    }

    //放到页面
    $('.page').html(pageString);

    //放到缓存中
    cache.push([page,html,pageString]);
    }
    });
    }
    //取第一页的评论
    ajaxGetPl(1);

    世上无难事,只怕有心人......
  • 相关阅读:
    5个经典的javascript面试问题
    去年的一些面试题
    各种奇妙的hack
    jQuery工作原理解析以及源代码示例
    JavaScript Window
    原生JavaScript技巧大收集(1~10)
    蜘蛛爬虫类程序抓取有防盗链的网站处理 php和wget命令简单破解防盗链网站的功能
    Git SSH Key 生成步骤
    linux下ssh使用rsa认证教程
    linux FTP服务器 VSFTP配置手册
  • 原文地址:https://www.cnblogs.com/gooderic/p/5799330.html
Copyright © 2011-2022 走看看