• ajax获取动态列表数据后的分页问题


    ajax获取动态列表数据后的分页问题

    这是我在写前台网站时遇到的一个分页问题,由于数据是通过ajax的方式来请求得到的,如果引入相应的js文件来做分页,假如只是静态的填放数据到列表各项内容中(列表条数固定),确实不会出现问题。但是要从ajax中获取数据后要动态添加<li>至<ul>并实现分页,js文件却达不到想要的分页效果。
     
    (原因:这是由于js脚本文件会在ajax完成请求之前执行,那么分页用到的js会先执行,而ajax中的动态添加<li>过程实现后确无法执行到分页的代码)
     

    操作过程

    1.首先,需要引入用到的JS插件
       在这里只需要 引入jquery的插件,下载可以点击打开链接  (相关的CSS样式可自行添加)
    <script src="js/jquery.min.js" type="text/javascript"></script>


    2.接下来便是设置ajax取得数据列表放入对应<ul>的位置,以及分页所要用到的上下页及页码的代码
    1 <div>
    2     <ul id="all">
    3                             
    4     </ul>
    5      <div class="page">
    6             <a id="down" href="#" onClick="change1(--pageno)">上一页</a>  
    7             <span id="a3"></span><a id="up" href="#" onClick="change1(++pageno)">下一页</a>
    8             <span class="ho"><span id="a2"></span>/<span id="a1"></span></span></div></div>

    3、利用ajax请求到数据,并写上需要用到的两个function,代码如下:

      1 <script>
      2      $(document).ready(function(){
      3       $.ajax({
      4        type:"POST",
      5        url:"##",
      6        contentType:"application/json",
      7        dataType:'json',
      8        data:id,
      9        async:true,
     10        success:function(data){
     11            for(var i=0;i<data.news.length;i++){
     12                  var d=data.news[i].releaseTime.split(" ");
     13                  var li=$("<li><div class='title'><h6><a href='announcementsArticle.html?newsId="+data.news[i].id+"'>"+data.news[i].themeName+"</a></h6><span class='date'>"+d[0]+"</span></div> </li>");
     14                  $("#all").append(li);
     15              }
     16              var a = document.getElementById("all").getElementsByTagName("li");
     17              var zz =new Array(a.length);
     18              for(var i=0;i <a.length;i++)
     19              { zz[i]=a[i].innerHTML } //div的字符串数组付给zz
     20              var pageno=1;               //当前页
     21              var pagesize=10;            //每页多少条信息
     22              if(zz.length%pagesize==0)
     23              {var  pageall =zz.length/pagesize }
     24              else
     25              {var  pageall =parseInt(zz.length/pagesize)+1}       //一共多少页
     26              $("#p").text(pageall);      //将pageall的值存放到div中,便于下次使用
     27              change(1,pageall,zz);
     28        }
     29     });
     30 })
     31  
     32  
     33  
     34  
     35  var k;
     36 function change(e,all,zu){
     37     zz=zu;    
     38     var pagesize=10; 
     39     pageall=all;
     40     pageno=e;
     41     if(e <1)//如果输入页<1页
     42     { e=1;pageno=1}//就等于第1页 , 当前页为1
     43     if(e>pageall)//如果输入页大于最大页
     44     {e=pageall;pageno=pageall}//输入页和当前页都=最大页
     45     document.getElementById("all").innerHTML="";//全部清空
     46     for(var i=0;i<pagesize;i++)
     47     {
     48         var div =document.createElement("li");//建立div对象
     49         div.innerHTML=zz[(e-1)*pagesize+i];//建立显示元素
     50         document.getElementById("all").appendChild(div);//加入all中
     51         if(zz[(e-1)*pagesize+i+1]==null)//超出范围跳出
     52             break
     53     }
     54     var ye="";
     55     for(var j=1;j<=pageall;j++)
     56     {
     57         if(e==j)
     58         {ye=ye+"<span><a href='#' onClick='change1("+j+")' style='color:#FF0000'>"+j+"</a></span> "}
     59         else
     60         {ye=ye+"<a href='#' onClick='change1("+j+")'>"+j+"</a> "}
     61     }
     62     document.getElementById("a1").innerHTML=pageall;
     63     document.getElementById("a2").innerHTML=pageno;
     64     document.getElementById("a3").innerHTML=ye;
     65  
     66     /*如果当前是第一页则:*/
     67  
     68     if (pageno == 1)
     69     {
     70         $('#down').hide();//隐藏
     71     }else {
     72         $('#down').show();//显示
     73     }
     74  
     75     /*如果是最后一页则:*/
     76  
     77     if (pageno == pageall)
     78     {
     79         $('#up').hide();//隐藏
     80     }else {
     81         $('#up').show();//显示
     82     }
     83     k=zu;
     84    
     85 }
     86 function change1(e){
     87     
     88     zz=k;    
     89     
     90     var pagesize=10; 
     91     pageall=$("#p").text();
     92     pageno=e;
     93     if(e <1)//如果输入页<1页
     94     { e=1;pageno=1}//就等于第1页 , 当前页为1
     95     if(e>pageall)//如果输入页大于最大页
     96     {e=pageall;pageno=pageall}//输入页和当前页都=最大页
     97     document.getElementById("all").innerHTML="";//全部清空
     98     for(var i=0;i<pagesize;i++)
     99     {
    100         var div =document.createElement("li");//建立div对象
    101         div.innerHTML=zz[(e-1)*pagesize+i];//建立显示元素
    102         document.getElementById("all").appendChild(div);//加入all中
    103         if(zz[(e-1)*pagesize+i+1]==null)//超出范围跳出
    104             break
    105     }
    106     var ye="";
    107     for(var j=1;j<=pageall;j++)
    108     {
    109         if(e==j)
    110         {ye=ye+"<span><a href='#' onClick='change1("+j+")' style='color:#FF0000'>"+j+"</a></span> "}
    111         else
    112         {ye=ye+"<a href='#' onClick='change1("+j+")'>"+j+"</a> "}
    113     }
    114     document.getElementById("a1").innerHTML=pageall;
    115     document.getElementById("a2").innerHTML=pageno;
    116     document.getElementById("a3").innerHTML=ye;
    117  
    118     /*如果当前是第一页则:*/
    119  
    120     if (pageno == 1)
    121     {
    122         $('#down').hide();//隐藏
    123     }else {
    124         $('#down').show();//显示
    125     }
    126  
    127     /*如果是最后一页则:*/
    128  
    129     if (pageno == pageall)
    130     {
    131         $('#up').hide();//隐藏
    132     }else {
    133         $('#up').show();//显示
    134     }
    135 }
    136  
    137  
    138  
    139  
    140     </script>
     

    4、<div style="display" id="p"></div> //用来存放总页数,放置在body中
    *注意看上面的代码中success回调函数中我先调用了一次change(1,all,zz)  这是进行了第一页的分页操作,并且我定义了一个全局变量k,当ajax请求完成时change(1,all,zz)这个函数将zz这个数据赋值给了k,这样当进行其他函数执行的时候,由于执行顺序的缘故,k已经变成了数组可以任意调用。(解决了zz这个数据作用的局限性)
     
    5.在得到了数组(k)与页数(div的值)的情况下只需要让生成的页码以及上下页中的onclick都触发第二个函数即可。
  • 相关阅读:
    女生“不愁嫁”的10大专业,有地位有面子!
    中国南北方文化差异分析比较
    跨代的对决 英特尔i7-6700HQ对比i7-4720HQ性能测试
    差之毫厘谬之千里!带你认识CPU后缀含义
    机器学习及其应用2013, 机器学习及其应用2015
    mysql中替换行首字符
    北京长途汽车站一览表
    IQ一个人的智力和对科学知识的理解掌握程度。 EQ对环境和个人情绪的掌控和对团队关系的运作能力。 AQ挫折商 一个人面对困境时减除自己的压力、渡过难关的能力。
    金融是现代经济的主要行业,因此金融类企业对学历的要求也就高,但同时金融类企业的工资也是比较高的。比如证券业、银行业,这些行业的工资都是处于领先地位的。名校金融毕业生的收入不菲早已不是什么秘密。而且,金融专业毕业生平均起点工资和平均定级工资已位列前端,排在曾经风光无限的IT业等行业之前。
    Basic Authentication in ASP.NET Web API
  • 原文地址:https://www.cnblogs.com/qiu2841/p/9441085.html
Copyright © 2020-2023  润新知