Ajax分页问题

 Ajax是大多数人在数据交互时都要用到的方法,当你从后台获取数据,如果这个数据比较庞大,那么分页问题就是必不可少的了。现在有个相对容易的方法(该方法基于jQuery),可以分享给大家 。

    首先封装一个函数:

function queryByPage(con,curpage,eachpage,sql,param,func){

//这里con是指后台数据库的链接接口;curpage、eachpage是从你要查的第几条到第几条;sql是查询语句;param是参数,没有可以不写;func是回调函数。

    if(!curpage || curpage <= 0){

        curpage = 1;

    }

    if(!func){

        func = param;

        param = [];

    }

    con.query("select count(*) cnt from ("+sql+") t",param,function(e,r,f){

        //获取总数量

        var count = r[0].cnt;

        //获取总页码

        var maxpage = Math.ceil(count/eachpage);

// maxpage最大页数;count数据的总数;eachpage每页获取的数据数;Math.ceil取整+1(不管你的余数是大于5还是小于5,Math.ceil都会在取整的基础上+1)

        sql += " limit "+((curpage-1)*eachpage)+","+eachpage;

        var inner_con = getConAPI();

        inner_con.query(sql,param,function(e,r,f){

 

 

var page = {"curpage":curpage,"maxpage":maxpage,"eachpage":eachpage};            func(e,r,f,page);

        });

        inner_con.end();

    });}

exports.getCon = getConAPI;

exports.queryByPage = queryByPage;

    封装了以上代码,在获取数据时我们只需调用就行了,比如:

exports.validatetable = function(req,resp){

    var con = mysql.getCon();

var curpage = req.query.curpage;

//这里是查询总数据的1到5条

    mysql.queryByPage(con,curpage,5,"select * from t_user",function(e,d,f,page){

        if(e){

            console.log(e);

        }else{

//返回所有值和页数

            resp.json({"data":d,"page":page});

        }

    });

    con.end();

};

接收时只需生成分页标签就行了

var cur = parseInt(d.page.curpage);

//cur是页数;funLoad是数据加载时的函数,每次点击都需刷新;

            var pageStr = "";

            if(cur > 1){

                pageStr += "<a onclick='funLoad("+ (cur-1) +")'>上一页</a>";

            }

            for(var i = 1;i <= d.page.maxpage;i++){

                pageStr += "<a onclick='funLoad("+i+")'>"+i+"</a>";

            }

            if(cur < d.page.maxpage){

 

                pageStr += "<a onclick='funLoad("+(cur+1)+")'>下一页</a>";

            }

            $("#page").html(pageStr);

posted @ 2015-06-06 14:31  晒太阳的加菲  阅读(129)  评论(0编辑  收藏  举报