Bootstrap 分页插件 ajax获取数据显示

时间:2023-05-05 12:21:50
  • Bootstrap 分页插件 ajax获取数据显示

    标签(空格分隔): bootstrap


    文章的内容是使用bootstrap-paginator进行分页,使用ajax获取后台数据、渲染。

    1. 版本说明

    • bootstrap 3.3.2
    • bootstrap-paginator v1.0 github

    2. 准备工程

    建立动态web工程,新建index.html页面,引入bootstrap相关css js文件。

    3. 简单显示

    在需要显示分页的位置添加ul标签:

        <ul id="pagination">
        </ul> 

    在页面底部添加js代码:

    <script>
        var options = {
            bootstrapMajorVersion: 3,
            alignment:'center',
            currentPage:1,
            numberOfPages:5,
            totalPages: 10,
            };
        $(document).ready(function(){
           $("#pagination").bootstrapPaginator(options);
        });
    </script> 

    启动web服务,访问index.html页面,可以看到分页显示。

    4. 后台准备数据

    建立一个servlet,负责向前台输出json数据。

        PrintWriter out = response.getWriter();
            String s1 = "[{\"name\":\"lilei\"},{\"name\":\"lilei2\"}]";
            String s2 = "{\"name\":\"hanmeimei\"}";
            String s3 = "{\"name\":\"jim\"}";
            String s4 = "{\"name\":\"jim1\"}";
            String s5 = "{\"name\":\"jim2\"}";
    
            String page = request.getParameter("page");
            String cur = null;
            switch (page) {
            case "1":
                cur = s1;
                break;
            case "2":
                cur = s2;
                break;
            case "3":
                cur = s3;
                break;
            case "4":
                cur = s4;
                break;
            case "5":
                cur = s5;
                break;
            default:
                break;
            }
            out.print(cur);
            out.close(); 

    5. 前台展示数据

    前台需要先获取记录的总条数和每页容量。
    
      <ol id="content">
    
                 </ol>
    
            <ul id="pagination" pageSize="2">
        <script>
        var totalPages;
        var pageSize = $("#pagination").attr("pageSize");
         $.ajax({
                url:"/BootstrapPagination/QueryStudents",
                type:"POST",
                dataType:"json",
                async:false,
                success:function(data){
                window.totalPages = Math.ceil(data /pageSize) ;
                },
                error:function(error){
                alert("error");
                }
                });
         </script>
        </ul>         

    其中pageSize设置为2,先用post方法获取totalPages,用来初始化分页插件。

     <script>
        var options = {
            bootstrapMajorVersion: 3,
            alignment:'center',
            currentPage:1,
            totalPages: totalPages ,
            pageUrl: function(type, page, current){
                return "/BootstrapPagination/QueryStudents?page="+page;
    },
    onPageClicked: function (event, originalEvent, type, page) {
         originalEvent.preventDefault();
        originalEvent.stopPropagation();
       $.ajax({
            url:originalEvent.target.href,
            type:"GET",
            dataType:"json",
            success: function(data){
                $("#content li").remove();
                $(data).each(function(){
                    $("#content").append("<li>"+this.name+"</li>");
                });
    
            },
            error: function(error){
                alert("error");
            }
       });
    }
        };
        $(document).ready(function(){
            $("#pagination").bootstrapPaginator(options);
            $("#pagination li:first a").trigger("click");
        });
    
    </script> 

    运行程序即可。详细的可以参见bootstrap-paginator说明,或者去bootstrap-paginator github查阅。 
    工程下载bootstrap-paginator.zip jdk1.8 tomcat 8