jQuery+AJAX实现纯js分页功能

使用jQuery的AJAX技术,在bootstrap的框架下搭建的纯js分页

bootstrap作为Twitter推的一款前端框架,效果个人还是觉得很不错的。这次只是拿来作为网页元素的css样式表使用,比较省力,效果也会比自己做要漂亮多了。

使用数据为单独的json文件data.json

[plain] view plain copy

[
    {
        "name": "bootstrap-table",
        "stargazers_count": "526",
        "forks_count": "122",
        "description": "An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3) "
    },
...
]

  

把主要代码和过程总结一下

html页面index.html如下

<!DOCTYPE html>
<html>
<head>
<title>Index</title>
<script type="text/javascript" src="js/jquery-1.8.1.min.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<link type="text/css" rel="stylesheet" href="bootstrap/css/bootstrap.css">
</head>  

<body>
    <div>
     <table id="table" class="table table-bordered table-hover">
            <thead>
            <tr>
                <th>ID</th>
                <th>Item Name</th>
                <th>Item Price</th>
            <th>Item Operate</th>
            </tr>
            </thead>
            <tbody>  

            </tbody>
        </table>
    </div>
    <nav align="center" id="page_nav">
    <ul class="pagination" id="page_prev">
        <li id="prev">
          <a href="#" aria-label="Previous">
            <span aria-hidden="true">?</span>
          </a>
        </li>
    </ul>
      <ul class="pagination" id="page_ul">  

      </ul>
      <ul class="pagination" id="page_next">
        <li id="next">
          <a href="#" aria-label="Next">
            <span aria-hidden="true">?</span>
          </a>
        </li>
      </ul>
    </nav>
</body>  

</html>

  

js代码index.js如下

var pageTotal=0;//总页数
var rowTotal=0;//总行数
var currentPage=0;//当前页数
var startRow=0;//页开始行数
var endRow=0;//页结束行数
var pageSize=2;//每页行数  

function page(){
    $.ajax({
        url:"data.json",
        type:"POST",
        dataType:"json",
        timeout:1000,
        error:function(){
            alert("ajax error");
        },
        success:function(data){
            rowTotal=data.length;
            pageTotal=Math.ceil(rowTotal/pageSize);//上取整
            currentPage=1;

  


<span style="white-space:pre">            </span>//绘制数据table
            if(pageTotal==1){
                for(var i=0;i<pageSize;i++){
                    $("#table tbody").append(
                    $("<tr><td>"+
                        data[i].name+
                        "</td><td>"+
                        data[i].stargazers_count+
                        "</td><td>"+
                        data[i].forks_count+
                        "</td><td>"+
                        data[i].description+
                        "</td></tr>")
                    );
                }
            }else{
                for(var i=0;i<pageSize;i++){
                    $("#table tbody").append(
                    $("<tr><td>"+
                        data[i].name+
                        "</td><td>"+
                        data[i].stargazers_count+
                        "</td><td>"+
                        data[i].forks_count+
                        "</td><td>"+
                        data[i].description+
                        "</td></tr>")
                    );
                }

  


<span style="white-space:pre">                </span>//绘制页面ul
                for(var i=1;i<pageTotal+1;i++){
                    $("#page_ul").append(
                        $("<li><a href=‘#‘>"+i+"</a><li>")
                    );
                }
            }
        }
    });
}
//翻页
function gotoPage(pageNum){
    $.ajax({
        url:"data.json",
        type:"POST",
        dataType:"json",
        timeout:1000,
        error:function(){
            alert("ajax error");
        },
        success:function(data){
            currentPage=pageNum;
            startRow=pageSize*(pageNum-1);
            endRow=startRow+pageSize;
            endRow=(rowTotal>endRow)?endRow:rowTotal;
            $("#table tbody").empty();
            for(var i=startRow;i<endRow;i++){
                $("#table tbody").append(
                    $("<tr><td>"+
                        data[i].name+
                        "</td><td>"+
                        data[i].stargazers_count+
                        "</td><td>"+
                        data[i].forks_count+
                        "</td><td>"+
                        data[i].description+
                        "</td></tr>")
                    );
            }  

        }
    });
}  

$(function(){
    page();  

    $("#page_ul li").live("click",function(){
        var pageNum=$(this).text();
        gotoPage(pageNum);
    });  

    $("#page_prev li").live("click",function(){
        if(currentPage==1){  

        }else{
            gotoPage(--currentPage);
        }
    });  

    $("#page_next li").live("click",function(){
        if(currentPage==pageTotal){  

        }else{
            gotoPage(++currentPage);
        }
    })
});

  

时间: 2024-10-28 20:31:58

jQuery+AJAX实现纯js分页功能的相关文章

让浏览器支持 jquery ajax load 前进、后退 功能

BEGIN; 一般在做 ajax load 的时候,很多人都不会考虑到需要浏览器支持前进后退功能,因为大部分人都不知道可以实现. 最近遇到这个问题,经过一小段研究,发现github已经有现成的开源工具使用,主要实现原理是利用html的锚点,即<a href="#xxx">,详情可查看https://github.com/balupton/jquery-history/tree/master 主要demo代码如下: html <ul> <li><

jQuery+Ajax+PHP+Mysql实现分页显示数据

css <style type="text/css"> #loading{ position: absolute; top: 200px; left:400px; } #container .pagination ul li.inactive, #container .pagination ul li.inactive:hover{ background-color:#ededed; color:#bababa; border:1px solid #bababa; curs

Java基础101 Struts2下的 jquery+ajax+struts 技术实现异步刷新功能

1.效果图示 横线上方的部分不动(没有刷新),下方实现刷新(异步刷新) 2.实现步骤 jquery+ajax+struts技术实现异步刷新功能的步骤:    1.需要用到 jquery+ajax+struts 那么需要用几个包:(commons-logging-1.0.4.jar.freemarker-2.3.13.jar.ognl-2.6.11.jar.struts2-core-2.1.6.jar.xwork-2.1.2.jar.commons-fileupload-1.2.1.jar)   

Ajax,纯Js+Jquery

AJAX:Asynchronous Javascript and xml 异步,Js和Xml 交互式网页开发 不刷新页面,与服务器交互 详情请参照Jquery工具指南用在浏览器端的技术,无刷新,通过XmlHttpRequest访问页面纯js版---------- if(XmlHttpRequest){ //判断是否支持XmlHttpRequest xhr= new XmlHttpRequest(); // 创建XmlHttpRequest对象 } else{ xhr= new Activexob

jsp、js分页功能的简单总结

一.概述 首先,我们要明确为何需要分页技术,主要原因有以下: 1.分页可以提高客户体验度,适当地选择合适的数据条数,让页面显得更有条理,使得用户体验感良好,避免过多数据的冗余. 2.提高性能的需要.分页技术,有选择的加载某部分数据,在数据量较大的时候,分部分加载数据.显示数据,可以有效提高程序的性能,当然,单纯的js的分页技术并没有这种效果. 所以,分页技术是web技术中比较常用的技术,而下面讨论的主要是两种分页技术:一种是jsp的分页技术,其读取数据分批次读取,操作页数跳转的时候才加载相应页面

使用jquery Ajax实现上传附件功能

用过jquery的Ajax的人肯定都知道,Ajax的默认编码方式是"application/x-www-form-urlencoded",此编码方式只能编码文本类型的数据,因此Ajax发送请求的时候,会把data序列化成 一个个String类型的键值对,此种传输数据的方式能够满足大部分应用场景,然而当传输的数据里有附件的时候,此序列化机制便是我们的绊脚石.Ajax本身的序列化机制的硬伤归其原因在于在html4的时代,没有FileReader接口,在页面里无法读取File(Blob)文件

前端js分页功能的实现,非常实用,新手必看

分享一个前端拿到数据后,自己生成分页的案例,案例如图显示,点击搜索后查询数据,显示数据列表,前端根据数据显示正确的分页 附上代码:代码附上,简单粗暴,自己用过的,兼容性好,没有封装,可以很好的分页原理,希望可以帮助到大家 html排版如下: <!--搜索列表--><div class="search"> <div class="container"> <div class="searchList">

基于Jquery+Ajax+Json+存储过程 高效分页

1 CREATE PROCEDURE [dbo].[PAGINATION] 2 @FEILDS VARCHAR(1000),--要显示的字段 3 @PAGE_INDEX INT,--当前页码 4 @PAGE_SIZE INT,--页面大小 5 @ORDERTYPE BIT,--当为0时 则为 desc 当为1 时 asc 6 @ANDWHERE VARCHAR(1000)='',--where语句 不用加where 7 @ORDERFEILD VARCHAR(100), --排序的字段 8 @T

纯js手动分页

昨天让做个页面,后台提供所有数据,没有做好分页,需要前端js手动分页. 我参考了 http://www.cnblogs.com/jiechn/p/4095029.html 做了些许改动让分页效果更加完善. 最终效果图 js代码 /** * 分页函数 * pno--页数 * psize--每页显示记录数 * 分页部分是从真实数据行开始,因而存在加减某个常数,以确定真正的记录数 * 纯js分页实质是数据行全部加载,通过是否显示属性完成分页功能 **/ function goPage(pno){ va