标签:
修改后台评论模型
创建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+‘" /></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+‘" /></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);
标签:
原文地址:http://www.cnblogs.com/gooderic/p/5799330.html