• 用ajax作分页查询


    分页查询是在日常生活中经常遇到的,例如博客分页、淘宝关键字分页查询等,ajax的分页相对复杂些,但是给用户的体验却是非常棒的,它可以实现不用刷新页面而进行分页。

    我用的是minzu表:

    首先,引入 jquery文件和bootstrap文件,因为要用bootstrap给分页做样式

    <script src="jquery-3.2.0.min.js"></script>
    <script src="dist/js/bootstrap.min.js"></script>
    <link href="dist/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
    <style>
    .list:hover{ cursor:pointer}//鼠标变小手
    #prev:hover{ cursor:pointer}
    #next:hover{ cursor:pointer}
    </style>
    <!-- HTML5 Shim 和 Respond.js 用于让 IE8 支持 HTML5元素和媒体查询 -->
          <!-- 注意: 如果通过 file://  引入 Respond.js 文件,则该文件无法起效果 -->
          <!--[if lt IE 9]>
             <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
             <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
          <![endif]-->
    </head>

    其次就是从数据库读数据显示表:

    <body>
    <h1>民族信息</h1>
    <div>名称:<input type="text" id="name1" /> <input type="button" id="chaxun" value="查询" /></div>
    <br />
    <table class="table table-striped">
      <thead>
        <tr>
          <td>代号</td>
          <td>名称</td>
        </tr>
          <tbody id="shuju">
            
          </tbody>
       </thead>
    </table><br />
    
    <ul class="pagination" id="xinxi"><!--引用bootstrap显示分页信息-->
    </ul>
    </body>

    然后开始写分页信息,理清思路,先干什么后干什么,先定义当前页与显示条数,造几个方法:

    <script>
    //定义当前页,默认为1,不能为0
    var page = 1;
    //定义每一页显示多少条留言信息
    var num = 5;
    //加载数据
    Load();
    
    //加载分页列表
    LoadFenYe();

    这里开始写分页方法:

    //加载数据的方法
    function Load()
    {
        var name1 = $("#name1").val();
        $.ajax({
            url:"fenchuli.php",
            data:{page:page,num:num,name1:name1},
            type:"POST",
            dataType:"JSON",
            success: function(data){
                var str = "";
                for(var k in data)//json遍历方式
                {
                    str = str + "<tr><td>"+data[k].code+"</td><td>"+data[k].name1+"</td></tr>";
                }
                $("#shuju").html(str);
            }
            
        })
    }
    
    //加载分页信息
    function LoadFenYe()
    {
        //存储所有分页信息的代码
        var s = "";
        var name1 = $("#name1").val();
        //加载上一页
        s = "<li><a id='prev'>&laquo;</a></li>";
        //加载列表
        var zts = 0;
        $.ajax({
            async:false,//必须取消异步,不然总条数为0,总页数也为0
            data:{name1:name1},
            type:"POST",
            url:"zts.php",
            dataType:"TEXT",
            success: function(data){
                zts = data;
            }
    
        });
        
        //求总页数,总页数为总条数除以每一页显示的条数,如果为小数则向上取整
        var zys = Math.ceil(zts/num);
        //为了防止出错
        page = parseInt(page);
        for( var i=page-2;i<page+3;i++)
        {
            if(i>0 && i<=zys)
            {
                if(i==page)
                {
                    s = s+"<li class='active'><a ys='"+i+"' class='dangqian'>"+i+"</a></li>";
                }
                else
                {
                    s = s+"<li><a ys='"+i+"' class='list'>"+i+"</a></li>";
                }
                
            }
        }
        //加载下一页
        s = s+"<li><a id='next'>&raquo;</a></li>";
        
        $("#xinxi").html(s);

    添加事件:

    //给上一页加事件
        $("#prev").click(function(){
            page = parseInt(page);
            if(page>1)
            {page--;}
            
            //重新加载数据
            Load();
            //重新加载分页信息
            LoadFenYe();
        })
        //给下一页加事件
        $("#next").click(function(){
            page = parseInt(page);
            if(page<zys)
            {page++;}
            
            //重新加载数据
            Load();
            //重新加载分页信息
            LoadFenYe();
        })
        
        //给列表加事件
        $(".list").click(function(){
            page = parseInt($(this).attr("ys"));
            //重新加载数据
            Load();
            //重新加载分页信息
            LoadFenYe();
        })
    }
    
    $("#chaxun").click(function(){
        //重新加载数据
        Load();
        //重新加载分页信息
        LoadFenYe();
    })
    
    </script>

    fenchuli页面:

    <?php
    $page = $_POST["page"];
    $num = $_POST["num"];
    $name1 = $_POST["name1"];
    require "DBDA.class.php";
    $db = new DBDA();
    $tguo = ($page-1)*$num;//跳过多少条数据
    
    $sql = "select * from minzu where name1 like '%{$name1}%' limit {$tguo},{$num}";
    
    echo $db->jsonquery($sql);

    zts页面:

    <?php
    $name1 = $_POST["name1"];
    require "DBDA.class.php";
    $db = new DBDA();
    $sql = "select count(*) from minzu where name1 like '%{$name1}%'";
    echo $db->strquery($sql);
  • 相关阅读:
    wqy的ACM赛G朱柏庐
    可持久化数据结构
    LibreOJ#2362蚯蚓
    LibreOJ#2359天天爱跑步
    「Luogu2221」[HAOI2012]高速公路
    「Luogu4158」[SCOI2009]粉刷匠
    「Luogu4317」花神的数论题
    WC2019 游记
    最大权闭合子图模型
    「Luogu2762」太空飞行计划问题
  • 原文地址:https://www.cnblogs.com/mengshenshenchu/p/6865819.html
Copyright © 2020-2023  润新知