tp5的ajax分页实现

最近都在基于tp5的框架做项目,tp5里有现成的分页,可以直接用,但是要刷新页面的翻页,客户不愿意,所以要用ajax技术来实现页面的无刷新分页,下面开始通过贴代码来说明,由于是直接从项目里拿出来的,不明白的地方我尽量用注释解释明白。

HTML部分有两部分组成:内容部分和页码部分。

 1 <div class="info-list">
 2       <ul id="ul_list_b">
 3             <!--内容部分-->
 4       </ul>
 5
 6       <nav aria-label="..." class="pg-pager"><!--页码部分-->
 7       <ul class="pagination" id="page" style="min-width: 300px">
 8           <li id="pre_b" style="display: block;"><span aria-hidden="true"><</span></li>
 9           <li id="page--" style="display: none;"><span aria-hidden="true">...</span></li>
10           <li id="page-4" style="display: none;"><span aria-hidden="true"></span></li>
11           <li id="page-3" style="display: none;"><span aria-hidden="true"></span></li>
12           <li id="page-2" style="display: none;"><span aria-hidden="true"></span></li>
13           <li id="page-1" style="display: none;"><span aria-hidden="true"></span></li>
14           <li id="page-0" style="display: none;"><span aria-hidden="true"></span></li>
15           <li id="pagep1" style="display: none;"><span aria-hidden="true"></span></li>
16           <li id="pagep2" style="display: none;"><span aria-hidden="true"></span></li>
17           <li id="pagep3" style="display: none;"><span aria-hidden="true"></span></li>
18           <li id="pagep4" style="display: none;"><span aria-hidden="true"></span></li>
19           <li id="pagepp" style="display: none;"><span aria-hidden="true">...</span></li>
20           <li id="next_b" style="display: block;"><span aria-hidden="true">></span></li>
21         </ul>
22       </nav>
23     </div>

js部分

 <script>
  var page_size={$size};
  </script>
  <script >
    var page_cur; //当前页码
    var max_cur; //最大页码
    var json; //总的数据
    //获取数据
    function showContent(page_cur){
      if(!page_cur){page_cur=1;}
      // console.log(page_cur);
      $.ajax( {
        type: ‘GET‘,
        url: "__ROOT__/index.php/index/index/invests", //tp这里的地址对应着方法
        data: {page:page_cur}
        , 

        dataType: ‘json‘,
        success: function(data) {
          json=data.list;
          len=data.count;
          page_size={$size};
          max_cur=Math.ceil(len / page_size);
          page_cur=parseInt(data.page);
          //console.log(json, max_cur);
          console.log(data,max_cur,page_size,page_cur);
          $(‘#ul_list_b‘).html(‘‘);
          for(var i=0; i < json.length; i++) {
              var path=json[i].path;
              var id=json[i].id;
              var day=json[i].day;
              var yearmonth=json[i].yearmonth;
              var title=json[i].title;
              var content=json[i].content;
              $(‘<li class="info-item"><a href="investment_detail/id/‘+id+‘" class="img"><img src="‘+path+‘"></a><div class="text"><div class="date"><strong>‘+day+‘</strong><span>‘+yearmonth+‘</span></div><div class="brief"><h3><a href="investment_detail/id/‘+id+‘">‘+title+‘</a></h3><p><a href="investment_detail/id/‘+id+‘">‘+content+‘...</a></p></div></div></li>‘).appendTo($(‘#ul_list_b‘));
          }

          //以下是页码的生成
          if(max_cur == 1){
            $(‘#page‘).html(‘‘);
          }
          if(max_cur < 6){
            noneall();
            changeinner(‘page-0‘,page_cur);
            for(var i=page_cur-1; i>0; i--){
              changeinner(‘page-‘+i, page_cur-i);
            }
            for(var i=1; i<max_cur-page_cur+1; i++){
              changeinner(‘pagep‘+i, page_cur+i);
            }
          }else{
            noneall();
            if(page_cur>3) changeinner(‘page--‘,‘...‘);
            if(page_cur<max_cur-2) changeinner(‘pagepp‘,‘...‘);

            if(page_cur<3){
              for(var i=page_cur-1; i>0; i--){
                changeinner(‘page-‘+i, page_cur-i);
              }
              for(var i=1; i<6-page_cur; i++){
                changeinner(‘pagep‘+i, page_cur+i);
              }

            }else if(page_cur+2>max_cur){
              for(var i=max_cur-page_cur; i>0; i--){
                changeinner(‘pagep‘+i, page_cur+i);
              }
              for(var i=1; i<6-(max_cur-page_cur+1); i++){
                changeinner(‘page-‘+i, page_cur-i);
              }
            }else{
              changeinner(‘page-1‘, page_cur-1);
              changeinner(‘page-2‘, page_cur-2);
              changeinner(‘pagep1‘, page_cur+1);
              changeinner(‘pagep2‘, page_cur+2);
            }
            changeinner(‘page-0‘,page_cur);
          }

        },
        error: function() {
          console.log("chucuo");
          //alert("数据加载失败1");
        }
      })
      return page_cur;
    };

    function changeinner(idname,content) {
      var obj = document.getElementById(idname);
      obj.style.display= "block";
      obj.innerHTML= ‘<span aria-hidden="true">‘+content+‘</span>‘;
    }

    function noneinner(idname,content) {
      var obj = document.getElementById(idname);
      obj.style.display= "none";
      obj.innerHTML= ‘<span aria-hidden="true"></span>‘;
    }

    function noneall() {
      for(var i=1;i<5;i++){
        noneinner(‘page-‘+i,‘‘);
        noneinner(‘pagep‘+i,‘‘);
      }
      noneinner(‘page-0‘,‘‘);
      noneinner(‘page--‘,‘‘);
      noneinner(‘pagepp‘,‘‘);

    }

    page_cur = showContent();
    max_cur = Math.ceil(parseInt({$count}) / parseInt({$size}));
    page_size = {$size};
    console.log(page_cur, max_cur, page_size);

    $(‘#pre_b‘).on(‘click‘, function() {
      if(page_cur !=1) {
        page_cur--;
        showContent(page_cur);
      }
    });

    $(‘#next_b‘).on(‘click‘, function() {

      if(page_cur !=max_cur) {
        page_cur++;
        showContent(page_cur);
      }
    });

    $(‘#page-1‘).on(‘click‘, function() {
      page_cur-=1;
      showContent(page_cur);
    });
    $(‘#page-2‘).on(‘click‘, function() {
      page_cur-=2;
      showContent(page_cur);
    });
    $(‘#page-3‘).on(‘click‘, function() {
      page_cur-=3;
      showContent(page_cur);
    });
    $(‘#page-4‘).on(‘click‘, function() {
      page_cur-=4;
      showContent(page_cur);
    });

      $(‘#pagep1‘).on(‘click‘, function() {
      page_cur+=1;
      showContent(page_cur);
    });
    $(‘#pagep2‘).on(‘click‘, function() {
      page_cur+=2;
      showContent(page_cur);
    });
    $(‘#pagep3‘).on(‘click‘, function() {
      page_cur+=3;
      showContent(page_cur);
    });
    $(‘#pagep4‘).on(‘click‘, function() {
      page_cur+=4;
      showContent(page_cur);
    });

    $(‘#page--‘).on(‘click‘, function() {
      page_cur=1;
      showContent(page_cur);
    });
    $(‘#pagepp‘).on(‘click‘, function() {
      page_cur=max_cur;
      showContent(page_cur);
    });
  </script>

PHP部分:

public function invests()
    {

        $size = 4;//每页显示数量
        $invests = Db::table(‘sri_investment)->where(‘status‘,1)->order(‘id‘)->limit(($page-1)*$size, $size)->select();
        $count = Db::table(‘sri_investment)->where(‘status‘,1)->order(‘id‘)->count();

        foreach ($invests as $k => $v) {
            $day = date(‘d‘, $v[‘create_time‘]);
            $yearmonth = date(‘Y-m‘, $v[‘create_time‘]);
            $sub_content = $v[‘content‘];

            $arr[‘list‘][] = array(‘id‘ =>$v[‘id‘],
                                    ‘path‘ =>$v[‘path‘],
                                    ‘day‘ =>$day,
                                    ‘yearmonth‘ =>$yearmonth,
                                    ‘title‘ =>$v[‘title‘],
                                    ‘content‘ =>$sub_content,
                                     );
        }
        $arr[‘page‘] = $page;
        $arr[‘count‘] = $count;
        echo json_encode($arr);
    }

下面是页码的样式,显示最多显示5个数字,省略号代表后面还有页码。(这个页码写了好久,主要是我的逻辑没缕清楚,加上熬夜,脑袋转不过来了,所以,大家还是少熬夜!)

第一次写这个技术类型的,有什么说不清楚的,请留言问吧,我知道的一定说清楚。

时间: 2024-07-29 19:02:14

tp5的ajax分页实现的相关文章

TP5中Jquery实现ajax分页(简单)

HTML代码: tp5内置分页<div id="page"> {$data.shop->render()}</div> jQuery代码: //ajax分页$('#page a').click(function (event) { //阻止a标签的跳转 event.preventDefault(); //获取a标签中和href值 var href = $(this).attr('href'); //实现ajax分页 $.ajax({ url:href, m

基于jquery的ajax分页插件(demo+源码)

前几天打开自己的博客园主页,无意间发现自己的园龄竟然有4年之久了.可是看自己的博客列表却是空空如也,其实之前也有写过,但是一直没发布(然而好像并没有什么卵用).刚开始学习编程时就接触到博客园,且在博客园学习了很多的知识,看过很多人的分享.说来也惭愧,自己没能为园友们分享自己的所学所得(毕竟水平比较差). 过去的一年也是辗转了几个城市换了几份工作(注定本命年不太平?).八月份来到现在所在的公司(OTA行业),公司是做互联网的,所以可能大家的前端都屌屌的?之前一直从事.NET开发(现在在这边也是),

Django - Ajax分页

目前总结了2种方法: 1. Ajax 分页 尼玛各种google,stackoverflow,搞了好久才总结出这个,之前使用Pagination tag loading的方式不好用,并且不能进行ajax提交请求的页面无刷新的方式去分页 1.view.py 1 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 2 from django.shortcuts import render 3 def xxx

瀑布流ajax分页

index.jsp 1 <%@ page language="java" pageEncoding="UTF-8"%> 2 <!DOCTYPE HTML> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 6 <title>图片&

ajax 分页完全代码整理

/* ajax分页 */var page_cur = 1; //当前页 var total_num, page_size, page_total_num;//总记录数,每页条数,总页数function getData(page) { //获取当前页数据     $.ajax({          type: 'GET',          url: 处理数据地址,          data: {              'page': page,              'catid': 

jQuery、Ajax分页

1.效果图预览 2.HTML代码 <div class="row"> <div class="col-lg-12 col-sm-12 col-xs-12 col-xxs-12"> <table class="table table-striped table-hover table-bordered bootstrap-datatable " id="TemplateTable"> <

jquery ajax分页插件特效源代码demo完整版

原文:jquery ajax分页插件特效源代码demo完整版 源代码下载地址:http://www.zuidaima.com/share/1550463586798592.htm 网上找的,原版本没有测试数据和建表脚本啥的,我给加上了.

Pagination jquery ajax 分页参考资料

http://www.zhangxinxu.com/wordpress/2010/01/jquery-pagination-ajax%E5%88%86%E9%A1%B5%E6%8F%92%E4%BB%B6%E4%B8%AD%E6%96%87%E8%AF%A6%E8%A7%A3/ 个人博客参考 中文项目地址:http://www.zhangxinxu.com/jq/pagination_zh/ 原项目地址:http://plugins.jquery.com/project/pagination 版

codeigniter实现ajax分页

<?php /** *417 add 主要是实现ajax分页 **/ class MY_Pagination extends CI_Pagination{ public function __construct() { parent::__construct(); } /** * Generate the pagination links * * @access public * @return string */ function create_ajax_links() { // If our