javascript jquery 实现 ajax 异步回调 + 表格快速实现 + 分页查询

331 阅读4分钟

目录

介绍

接口介绍

参数:

返回数据结构

页面引入依赖

页面代码

htmlcode

csscode

js code

回调ajax方法

分页code

请求服务获取回调 加载表格 方法

调用代码

效果

后台分页代码



介绍

此服务包括几块内容

分页

ajax回调查询

模块

--标题

--搜索

--表格内容

--分页

具体使用的时候进行修改部分位置参数即可

使用中有些没有用到的全局变量,或方法,可以不用管,也可自己编辑一个

 

 

接口介绍

参数:

/**
	 *4.通过xx查询对应的xx数据接口
	 * 
	 * @param pageNum	 页数
	 * @param pageCount	  条数
	 * 
	 * @param xxCode  权限代码
	 * 
	 * @return  {state:success,totalCount:50,data:[{},{}]} or  {state:error,info:run error}
	 */

 

返回数据结构

{state:success,info:"run success" ,pageCount:909,data:[{},{},{}]}

 

页面引入依赖

jquery即可 到jquery官网获取  jquery.com/

 

页面代码

htmlcode

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>管理首页</title>
    <link rel="stylesheet" type="text/css" href="../../css/public.css" />
    <link rel="stylesheet" type="text/css" href="../../css/admin/indexData.css" />
</head>

<body>
    <!-- 在线用户管理模块 -->
    <div class="infobody" id="body1">
        <!-- 标题 -->
        <div class="title"><label>在线用户管理</label></div>
        <!-- 搜索 -->
        <div class="search">
            用户id:<input type="text" id="user_id">
            访问ip:<input type="text" id="requestip">
            用户名:<input type="text" id="username">
            在线状态:<select id="onlineType">
                <option value="">全部</option>
                <option value="1">在线</option>
                <option value="0">离线</option>
            </select>
            在线id:<input type="text" id="queryid">
            <input type="button" id="submit" value="搜索" />
        </div>
        <!-- 内容 -->
        <div class="infoIn"></div>
        <!-- 分页 -->
        <div class="pageUitl"></div>
    </div>
    <!-- 用户管理模块 -->
    <div class="infobody" id="body2">
        <!-- 标题 -->
        <div class="title"><label>用户管理</label></div>
        <!-- 搜索 -->
        <div class="search">
            用户id:<input type="text" id="queryid1">
            手机号:<input type="text" id="userPhone">
            用户名:<input type="text" id="userName">
            <input type="button" id="submit" value="搜索" />
        </div>
        <!-- 内容 -->
        <div class="infoIn"></div>
        <!-- 分页 -->
        <div class="pageUitl"></div>

    </div>
</body>
<script src="../../lib/jquery.js"></script>
</html>

csscode

body{
    margin:0;
    padding:0;
}
span{
    padding:2px 10px;
    border:1px solid #fff;
    border-radius:2px;
    cursor:pointer;
}

.infobody{
    background:#000;
}
.infobody .title{
    height:30px;
    line-height:30px;
    background:rgb(197, 194, 194);
    padding-left:10px;
}
.infobody .search{
    line-height:30px;
    background:rgb(216, 211, 211);
    /* padding-left:10px;   */
      float: left;
    width: 100%;
}
.infobody .search input{
   width:100px;
}
#onlyUserAddDept{
    float: right;cursor:pointer;
}
#adminAddDeptopenpopup{
    float: right;cursor:pointer;
}
.infobody .infoIn{
    float: left;
    width: 100%;
    background:rgb(216, 211, 211);
}
.infobody .pageUitl{ float: left;
    width: 100%;
    height:50px; line-height:50px;
    background:rgb(167, 163, 163);
}
 .adddeptPopupInfo{
     background:#8c8686;
     height:300px;
     width:100%;
     text-align:center;
 }

table{
    width:100%;
    text-align:center;
    line-height:30px;
}

#onlyUserAlldept{
    display:none;

}

 

js code

回调ajax方法

/**
 * 获取数据服务 示例
   var params = {
            url:"/spccService/sendCheckCode",
            data:{phoneNum:document.getElementById("phoneNum").value},
            callback: function(data){alert(data=='success'?'发送成功':'发送失败');}
        };
        getService(params);
 * 
 * @param {*} params  
 */
var getService = function(params) {
    
    $.ajax({
        type: "POST",
        url: ServerUrl + params.url,
        data: params.data,
        async: true,
        //crossDomain: true,
        // xhrFields: {withCredentials: true},
        success: function(data) {
            if (data == "illegal token") {
                alert("非法请求");
                window.location = nowHtmlAddressorigin + "/index.html?login=false"
                return;
            }
            params.callback(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            // 状态码
            console.log(XMLHttpRequest.status);
            // 状态
            console.log(XMLHttpRequest.readyState);
            //错误信息   
            console.log(textStatus);
            alert("异常");
            window.location = nowHtmlAddressorigin + "/index.html?login=false"
            return;
        }
    });
}

 

分页code



//公共数据
var superdata = {
    //分页使用
    pageUtil:' <label id="pagingUitl">'
                    +'&nbsp;<span>首页</span>'
                    +'&nbsp;<span>上一页</span>'
                    +'&nbsp;第:<input type="text" id="numPage" style="width:30px;" value="1"/>'
                    +'&nbsp;共:<label id="maxpage">1</label>页'
                    +'&nbsp;<span>跳至页</span>'
                    +'&nbsp;<span>下一页</span>'
                    +'&nbsp;<span>尾页</span>'
                    +'&nbsp;当前页:<label id="nowLineNum">1</label>条'
                    +'&nbsp;共:<label id="totalNum">1</label>条'
              +'</label>',
              
};

/**
 * 添加分页公共分页
 * 
 * test 调用示例
 * 
 *   var pageParams ={
        pageNum:pageNum //当前页数
        ,pageCount:pageCount //一页展示条数
        ,totalNum:totalNum //总条数
        ,id:"#infobody1 .pageUitl" //展示位置
        ,callbackFun:"getUserTask(params.pageNum,params.pageCount);"//回调方法
    }
    addPagingUitl(pageParams);
 * 
 * 
 * @param { 
    *   pageNum :页数
    *   ,pageCount: 一页条数
    *   ,totalNum :总条数
    *   ,id 展示位置
    *   callbackFun:回调方法
    *  } params 
 * 
 *
 */
var addPagingUitl = function(params){
   
    //------------------------------------------1.获取参数---------------------  

    //当前页(必传)
    var pageNum = params.pageNum==null?0:params.pageNum;
    //每页展示条数(必传)
    var nowPageConet = params.pageCount==null?10:params.pageCount;
    //总条数(必传)
    var totalNum = params.totalNum==null?16:params.totalNum;

    //------------------------------------------2.渲染分页页面---------------------  
    //渲染页面 页数 一页条数 总条数  总页数 
    $(params.id).empty().append(superdata.pageUtil);
    
    //------------------------------------------3.添加分页值---------------------  
    //添加分页参数值
    $(params.id+' #pagingUitl #numPage').attr("value",pageNum);//当前页
    $(params.id+' #pagingUitl #maxpage').text(Math.ceil(totalNum/nowPageConet));//总页数
    $(params.id+' #pagingUitl #nowLineNum').text(nowPageConet);//一页展示条数
    $(params.id+' #pagingUitl #totalNum').text(totalNum);//总条数
    
    //------------------------------------------4.设置样式---------------------  
    //设置分页样式 居中
    $(params.id+" #pagingUitl").css("margin-left",((nowbodyWidth-550)/2)+"px")

    //------------------------------------------5.设置样式---------------------  
    //按钮事件 
    $(params.id+" #pagingUitl span").click(function(){
        var nowText = $(this).text();
        var pageNum = parseInt($(params.id+" #pagingUitl #numPage").val());//当前页
        var maxpage = parseInt($(params.id+" #pagingUitl #maxpage").text());//总页数

        if(nowText == "首页"){
            params.pageNum = 1;

        }else if(nowText == "上一页"){
            if(pageNum == 1){
                alert("已经是第一页了!");
                return;
            }
            params.pageNum = pageNum-1;

        }else if(nowText == "下一页"){
            if(pageNum == maxpage){
                alert("已经是最后一页了!");
                return;
            }
            params.pageNum = pageNum+1;

        }else if(nowText == "尾页"){
            params.pageNum = maxpage;

        }else if(nowText=="跳至页"){
            if(pageNum>maxpage || pageNum==0){
                alert("请输入正确页数!");
                return;
            }
            params.pageNum = pageNum;
        }
        eval(params.callbackFun);//执行后回调方法
    });
   

}

 

请求服务获取回调 加载表格 方法

var getUserTask1 = function(pageNum,pageCount) { //在线用户数据
    var params = {
        url: "/deptService/qyglservice/adminQueryUserData",
        data: {
            pageNum: pageNum
            ,pageCount: pageCount
            ,userPhone  :$("#userPhone").val()
            ,userName  :$("#userName").val()
            ,queryid  :$("#queryid1").val()
        },
        callback: function(data) {  getUserTaskCallback1(data,pageNum,pageCount); }
    };
    getService(params);
}

var getUserTaskCallback1 = function(data,pageNum,pageCount) { //展示表格
    var params = {
            element: "#body2 .infoIn",
            data: data.data,
            totalNum: data.totalCount,
            thead: ["编号", "名称"     , "手机号" , "创建时间"   , "标签", "备注","密码登录失败","验证码登录失败    ","操作"],
            tbody: ["id"  , "name", "phone", "create_time", "label", "remarks","password_login_number","phone_check_code_login_number"],
            callback: function() { console.log(data) }
        }
        // public.tableUitl(params);
        //需要特别操作的写单独内容
    var element = params.element,
        data = params.data,
        thead = params.thead,
        totalNum=params.totalNum,
        tbody = params.tbody;
    // callback=params.callback;

    //表格内容info    
    var htmlTheadVal = "";
    var htmlTbodyVal = "";
    for (let i = 0; i < thead.length; i++) { //写入表格头
        htmlTheadVal += '<th>' + thead[i] + '</th>';
    }
    for (let i = 0; i < data.length; i++) { //写入表格体
        htmlTbodyVal += '<tr>';
        for (let j = 0; j < tbody.length; j++) {
            var nowHtml = "";
            if (tbody[j].indexOf('time') != -1) {
                nowHtml = formatDateTime(data[i][tbody[j]]);
            }else if(tbody[j]=="phone"){
                nowHtml = data[i][tbody[j]]+"****";
            }else{
                nowHtml = data[i][tbody[j]] == null ? "&nbsp;" : data[i][tbody[j]];
            }
            htmlTbodyVal += '<td><div>' + nowHtml + '</div></td>';
            if (j == tbody.length - 1) {
                nowHtml = '<span idkey="' + data[i]["id"] + '">查看权限</span>';
                htmlTbodyVal += '<td><div>' + nowHtml + '</div></td>';
            }
        }
        htmlTbodyVal += '</tr>';
    }
    var htmlThead = "<thead><tr>" + htmlTheadVal + "</tr></thead>";
    var htmlTbody = "<tbody>" + htmlTbodyVal + "</tbody>";
    var htmlTable = "<table>" + htmlThead + htmlTbody + "</table>";

    $(element).empty().append(htmlTable);
    
    $(element + ' span').click(function() {
        var idkey = $(this).attr("idkey");
        nowOnlyQueryUserid = idkey;
        var params = { //查看版本具体数据
            url: "/deptService/qyglservice/queryUserAllDept",
            data: {
                pageNum: 1,
                pageCount: 200,
                queryid: idkey
            },
            callback: function(data) {
                //展示权限页面
                clearAllBodyOpenOnly("#onlyUserAlldept");
                getUserTaskDeptCallback1(data);
            }
        };
        getService(params);
    });

    //加载分页
    var pageParams ={
        pageNum:pageNum
        ,pageCount:pageCount
        ,totalNum:totalNum
        ,id:"#body2 .pageUitl"
        ,callbackFun:"getUserTask1(params.pageNum,params.pageCount);"
    }
    addPagingUitl(pageParams);

}

对每种数据做操作可以进行判断做操作展示

可以添加具体的点击事件或各种事件

 

调用代码

var globalNowPage;
var globalNowPage.pageNum=1;
var globalNowPage.pageCount=10; 
$("#body2 .search #submit").click(function(){//用户管理搜索
        getUserTask1(globalNowPage.pageNum,globalNowPage.pageCount);
    });

 

效果

 

 

后台分页代码

/**
	 * 查询支付订单
	 * 
	 * @param userid
	 * @param queryid
	 * @param relation_order_id
	 * @param subject
	 * @param relation_table
	 * @param pageCount 
	 * @param pageNum 
	 * 
	 * @return JSONObject
	 */
	public JSONObject queryOrderTask(String userid, String queryid,
			String relation_order_id, String subject, String relation_table, int pageNum, int pageCount) {
		JSONObject restJo = new JSONObject();
		try {
			String datasSql = "select * from ";
			String countSql = "select count(id) totalCount from ";
			String whereSql ="pay_order_0 where userid='"+userid+"' ";
			if(!relation_order_id.equals("")){
				whereSql += " relation_order_id='"+relation_order_id+"' ";
			}
			// 查询没有分页的总条数
			int  totalList = aod.queryTotalApiInfo(countSql+whereSql);
			log.info(userid+ "query pay_order_0 count success");
			System.out.println(totalList);
			// 查询当前查询分页数据
			whereSql += " ORDER BY  create_time desc  ";
			whereSql += " limit " + (pageNum - 1) * pageCount + "," + pageCount+ " ;";
			List<HashMap<String, Object>>  list = aod.queryApiInfo(datasSql+whereSql);
			log.info(userid+ "query pay_order_0 data success");

			// 组装数据
			restJo.put("state", "success");
			restJo.put("totalCount", totalList);
			restJo.put("data", list);
			return restJo;
		} catch (Exception e) {
			log.info(userid+ "query pay_order_0 error:"+ e.toString());
			// 组装数据
			restJo.put("state", "error");
			restJo.put("totalCount", "0");
			restJo.put("data", "null");
			return restJo;
		}
		
	}

 

 

ok

 

 

 

 

 

持续更新