无刷新分页展示


思路

点击时:

1、得到当前页数据  2、得到当前分页连接html

分别替换数据,分布连接


第1页

//该专家全部相关问答
                       $m = new Model();
                      $page = I("get.page", 1, "intval");
			$start = ($page - 1) * 6;
			$sql = "SELECT post_ask.expert_id,post_ask.ask_id,post_ask.ask_body,post_ask.ask_user,post_ask.ask_time,post_answer.answer_body,post_answer.answer_user,post_answer.answer_time  from post_ask
                           right JOIN post_answer on post_ask.ask_id = post_answer.ask_id and post_answer.answer_body is not null
                           where post_ask.ask_id is not null and post_ask.ask_body <>'' and (post_ask.expert_id =$expert_id and post_answer.answer_user =$expert_id)
                           GROUP BY post_ask.ask_id
						LIMIT $start, 6";

			$rela_ask_answer = $m->query($sql);
			foreach ($rela_ask_answer as $key => &$value) {
				$ask_user_name = M('user')->where("id = " . $value['ask_user'])->getField('nickname');
				$value['ask_user'] = $ask_user_name ? mb_substr($ask_user_name, 0, 12) : "匿名用户";

				if($value['label_id'] == NULL){
					$value['label_id'] = '';
				}
				$map['label_id']=array('in',$value['label_id']);
				$ask_list[$key]['label_name']=M('label_list')->where($map)->select();
			}

			//分页处理
			$sql = "SELECT count(*) as count from (SELECT post_ask.expert_id,post_ask.ask_id,post_ask.ask_body,post_ask.ask_user,post_ask.ask_time,post_answer.answer_body,post_answer.answer_user,post_answer.answer_time  from post_ask
                           right JOIN post_answer on post_ask.ask_id = post_answer.ask_id and post_answer.answer_body is not null
                           where post_ask.ask_id is not null and post_ask.ask_body <>'' and (post_ask.expert_id =$expert_id and post_answer.answer_user =$expert_id)
                           GROUP BY post_ask.ask_id ) as u";
			$rela_ask_answer_info = $m->query($sql);
			$rela_ask_answer_count = $rela_ask_answer_info[0]['count'];						
			$total_page = ceil($rela_ask_answer_count / 6);

			//$link_url = U('Coach/zhuanjia/zj_id/', array('page' => 'ppp'));
			$page_htmls = pagination($total_page, $page, "javascript:void(0);", 5, "class='nu_page'");

		    $zhuanjia_name = $getExpertLists[0]['nickname'];
			$this->assign('zhuanjia_name', $zhuanjia_name);
			$this->assign('pageLinks', $page_htmls);
			$this->assign('rela_ask_answer', $rela_ask_answer);

2步:前端ajax请求

 //ajax无刷新翻页
   //上一页,下一页
   $('.next').live("click", function () {
        var page = parseInt($('.ck-page .curr').html()) + 1;
        get_page_list(page);

    })
    $('.prev').live("click", function () {
        var page = parseInt($('.ck-page .curr').html()) - 1;
        get_page_list(page);
    })
    //页码list 1,2,3,4,5
    $('.nu_page').live("click", function () {
        var page = $(this).html(); //获得点击页码
        var expert_id = "{$expert_id}";   
       var Ajaxurl = "/index.php/Coach/get_zhuanjia_wenda"; //提交点按钮后的数据
        $.ajax({
            type: 'post',
            url: Ajaxurl,
            data: "page=" + page+"&expert_id="+expert_id,
            success: function (mag) {
                if (mag) {
                    //console.log(eval(mag));

                    var htmls = eval(mag);
                    var zhuanjia_name = "{$zhuanjia_name}";
                    console.log(htmls);
                    //console.log(htmls.length);
                    var str_html = "";
                    for ($i = 0; $i < (htmls.length) - 1; $i++) {
                        str_html = str_html + '<li>' + '<ul class=\'askul\'>' +
                                '<li>' + '<img src=\'/Public/img/问.png\' alt=\'\' class=\'askimg\'>' + '<p class=\'askp\'>' +
                                '<a href=\'/wenda/'+htmls[$i]['ask_id']+'.html\' target=\'_blank\'>' +htmls[$i]['ask_body']+ '</a></p><span class=\'asktime\'>'+htmls[$i]['ask_time']+
                                '</span><span class=\'askactor\'>By    '+htmls[$i]['ask_user']+'</span></li>' +
                                '<li>' + '<img src=\'/Public/img/huida.png\' alt=\'\' class=\'askimg\'>' + '<p class=\'askp\'>' +
                                '<a href=\'/wenda/'+htmls[$i]['ask_id']+'.html\' target=\'_blank\'>' +htmls[$i]['answer_body']+ '</a></p><span class=\'asktime\'>'+htmls[$i]['answer_time']+
                                '</span><span class=\'askactor\'>By    '+zhuanjia_name+'</span></li>' +
                                '</ul>' +
                                '</li>'
                    }
                    $("#ask_lists").html(str_html);
                    console.log(str_html);


                    $(".wenda_pagelink").html(eval(mag)[htmls.length-1]);
                }
            }
        });
    })
  //上下页的翻动
 function get_page_list(page){
        var page = page;
        var expert_id = "{$expert_id}";
        var Ajaxurl = "/index.php/Coach/get_zhuanjia_wenda"; //提交点按钮后的数据
        $.ajax({
            type: 'post',
            url: Ajaxurl,
            data: "page=" + page+"&expert_id="+expert_id,
            success: function (mag) {
                if (mag) {
                    //console.log(eval(mag));

                    var htmls = eval(mag);
                    var zhuanjia_name = "{$zhuanjia_name}";
                    console.log(htmls);
                    //console.log(htmls.length);
                    var str_html = "";
                    for ($i = 0; $i < (htmls.length) - 1; $i++) {
                        str_html = str_html + '<li>' + '<ul class=\'askul\'>' +
                                '<li>' + '<img src=\'/Public/img/问.png\' alt=\'\' class=\'askimg\'>' + '<p class=\'askp\'>' +
                                '<a href=\'/wenda/'+htmls[$i]['ask_id']+'.html\' target=\'_blank\'>' +htmls[$i]['ask_body']+ '</a></p><span class=\'asktime\'>'+htmls[$i]['ask_time']+
                                '</span><span class=\'askactor\'>By&nbsp;&nbsp;&nbsp;&nbsp;'+htmls[$i]['ask_user']+'</span></li>' +
                                '<li>' + '<img src=\'/Public/img/huida.png\' alt=\'\' class=\'askimg\'>' + '<p class=\'askp\'>' +
                                '<a href=\'/wenda/'+htmls[$i]['ask_id']+'.html\' target=\'_blank\'>' +htmls[$i]['answer_body']+ '</a></p><span class=\'asktime\'>'+htmls[$i]['answer_time']+
                                '</span><span class=\'askactor\'>By&nbsp;&nbsp;&nbsp;&nbsp;'+zhuanjia_name+'</span></li>' +
                                '</ul>' +
                                '</li>'
                    }
                    $("#ask_lists").html(str_html);
                    console.log(str_html);


                    $(".wenda_pagelink").html(eval(mag)[htmls.length-1]);
                }
            }
        });
    }


3步 分布得数据方法

$page_htmls = str_replace("title='第1页'","title='第1页' class='nu_page'",$page_htmls);	//专家页面相关问答分页请求
	public function get_zhuanjia_wenda()
	{
		//该专相关问答
		$m = new Model();
		$page = $_POST['page'];$expert_id = $_POST['expert_id'];
		$start = ($page - 1) * 6;
		$sql = "SELECT post_ask.expert_id,post_ask.ask_id,post_ask.ask_body,post_ask.ask_user,post_ask.ask_time,post_answer.answer_body,post_answer.answer_user,post_answer.answer_time  from post_ask
                           right JOIN post_answer on post_ask.ask_id = post_answer.ask_id and post_answer.answer_body is not null
                           where post_ask.ask_id is not null and post_ask.ask_body <>'' and (post_ask.expert_id =$expert_id and post_answer.answer_user =$expert_id)
                           GROUP BY post_ask.ask_id
						LIMIT $start, 6";

		$rela_ask_answer = $m->query($sql);
		foreach ($rela_ask_answer as $key => &$value) {
			$ask_user_name = M('user')->where("id = " . $value['ask_user'])->getField('nickname');
			$value['ask_user'] = $ask_user_name ? mb_substr($ask_user_name, 0, 12) : "匿名用户";

			if($value['label_id'] == NULL){
				$value['label_id'] = '';
			}
			$map['label_id']=array('in',$value['label_id']);
			$ask_list[$key]['label_name']=M('label_list')->where($map)->select();
		}

		//分页处理
		$sql = "SELECT count(*) as count from (SELECT post_ask.expert_id,post_ask.ask_id,post_ask.ask_body,post_ask.ask_user,post_ask.ask_time,post_answer.answer_body,post_answer.answer_user,post_answer.answer_time  from post_ask
                           right JOIN post_answer on post_ask.ask_id = post_answer.ask_id and post_answer.answer_body is not null
                           where post_ask.ask_id is not null and post_ask.ask_body <>'' and (post_ask.expert_id =$expert_id and post_answer.answer_user =$expert_id)
                           GROUP BY post_ask.ask_id ) as u";
		
		$rela_ask_answer_info = $m->query($sql);
		$rela_ask_answer_count = $rela_ask_answer_info[0]['count'];		
		
		$total_page = ceil($rela_ask_answer_count / 6);
		//$link_url = U('Coach/zhuanjia/zj_id/', array('page' => 'ppp'));
		$page_htmls = pagination($total_page, $page, "javascript:void(0);", 5, "class='nu_page'");
                $page_htmls = str_replace("title='第1页'","title='第1页' class='nu_page'",$page_htmls);

               array_push($rela_ask_answer,explode('@',$page_htmls));//将分页链接加入 相关问答数组中,一起json返回给前端
		$this->ajaxReturn($rela_ask_answer);
	}

其中改变一下 分页类中分页连接,加class参数,class方法点击触发

function公共类中

/**
 * 
 * @param unknown $total_page
 * @param unknown $current_page
 * @param unknown $link_url
 * @param number $type
 * @return string
 * 
 * e.g
 * pagination($total_page, $current_page, $link_url);
 */
function pagination($total_page, $current_page, $link_url, $type = 1, $a_class='') {
	if ($total_page <= 1) {
		return '';
	}
	
	$link_head = array();
	parse_str($_SERVER['QUERY_STRING'], $query);
	if (isset ($query['page'])) {
		unset ($query['page']);
	}
	
	foreach ($query as $k => $v) {
		//去除无效参数名
		if (empty($v) && $v != 0) {
			unset($query[$k]);
			continue;
		}
	
		$link_head[] = $k.'='.urlencode($v);
	}

	$link_head[] = 'page=';
	$vhead = strtolower($_SERVER['PHP_SELF']).'?'.implode('&', $link_head);
	
	$separator = '';
	$content = '';
	
	if (1 == $type) {
		$prev = "<a title='上一页' href='".str_replace('ppp', $current_page - 1, $link_url)."' class='pagePrev ajaxLink'> </a>";
		$next = "<a title='下一页' href='".str_replace('ppp', $current_page + 1, $link_url)."' class='pageNext ajaxLink'> </a>";
		if ($current_page > 1) {
			$content .= $prev;
		}
		$min = $total_page <= 6? 1: (($current_page - 2) > 0 ? $current_page - 2 : 1);
		$max = $total_page <= 6? $total_page: $min + 4;
		if($max > $total_page){
			$max = $total_page;
			$min = $max - 4;
		}
		
		for($i = $min; $i <= $max; $i++){
			$content .= ($i == $current_page)
				? "<a class='selected' style='padding-left:0;'> ".$i." </a>"
				: "<a title='第" . $i . "页' href='" . str_replace('ppp', $i, $link_url) . "' class='ajaxLink'>" . $i . "</a>";
		}
		if($current_page < $total_page){
			$content .= $next;
		}
	} else if (5 == $type) {
		$min = $total_page <= 6 ? 1: (($current_page - 2) > 0 ? $current_page - 2 : 1);
		$prev = "<a title='上一页' href='".str_replace('ppp', $current_page - 1, $link_url)."' class='prev'>上一页</a>";
		if ($min > 1) {
			$prev .= "<a title='第1页' href='".str_replace('ppp', 1, $link_url)."'>1</a>";
		}
		if ($min > 2) {
			$prev .= "<span class='ellipsis'>...</span>";
		}
		$next = "<a title='下一页' href='".str_replace('ppp', $current_page + 1, $link_url)."'  class='next'>下一页<s></s></a>";
		if($current_page > 1){
			$content .= $prev;
		}
		$min = $total_page <= 6 ? 1: (($current_page - 2) > 0 ? $current_page - 2 : 1);
		$max = $total_page <= 6 ? $total_page: $min + 4;
		if($max > $total_page){
			$max = $total_page;
			$min = $max - 4;
		}
		for($i = $min; $i <= $max; $i++){
			$content .= ($i == $current_page)
				? "<span class='curr'> ".$i." </span>"
				: "<a $a_class title='第" . $i . "页' href='" . str_replace('ppp', $i, $link_url) . "'>" . $i . "</a>";
		}
		if ($max < $total_page - 1) {
			$content .= "<span class='ellipsis'>...</span>";
		}
		if ($max < $total_page) {
			$content .= "<a $a_class title='第".$total_page."页' href='".str_replace('ppp', $total_page, $link_url)."'>".$total_page."</a>";
		}
		if($current_page < $total_page){
			$content .= $next;
		}
	}
	
	return $content;
}



总结: 一个数据信息 一个分页信息

public function getMoreEmployeeList()
	{
		$company_id = I('company_id');	//公司id
		$page = $_POST['page'];
		$start = ($page - 1) * 20;
		$sql = "SELECT * from employee where company_id = '$company_id'
						LIMIT $start, 20";

		$list = M()->query($sql);

		//分页处理
		$sql = "SELECT count(*) as count from employee";
		$count_info = M()->query($sql);
		$count_infos = $count_info[0]['count'];

		$total_page = ceil($count_infos / 20);
		$page_htmls = pagination($total_page, $page, "javascript:void(0);", 5, "class='nu_page'");
		$page_htmls = str_replace("title='第1页'","title='第1页' class='nu_page'",$page_htmls);

		array_push($list,explode('@',$page_htmls));//将分页链接加入 数组中,一起json返回给前端
		apiReturnMsg(1, '员工列表数据',$list);
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛慢慢向上爬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值