JSP ajax 异步请求分页

JSP ajax 异步请求分页

前台

前台使用jsp进行渲染,请求需要调用ajax,来实现数据调用(满满的干货)

ajax请求样例

		$.ajax({  
                     url: '/aipocr/saveBatchData.action' ,  
                     type: 'GET',  
                     data: formData, 
                     async: false,  
                     cache: false,  
                     contentType: false,  
                     processData: false,  
                	success: function (result) {
                	debugger;
                    console.log(result);//打印服务端返回的数据(调试用)
               		 },
               	 error : function() {
                	debugger;
                	//alert("保存失败!");
              	  }
           		 });       
  1. 注释
    在数据传输时:
    encodeURI()方式可以对传到后台的中文字段进行加密处理 ,防止传入的中文不会出现中文乱码现象
    样例:
		data: "saveData="+ encodeURI(encodeURI(obj[i].value)), 

在后台需要调用URLDecoder()方法进行解密
样例:

		String str = Request.getString(request, "saveData");
		str = URLDecoder.decode(str,"UTF-8");
  1. 后台接受请求后返回
    返回方式:
    样例:
		PrintWriter out = getResponse().getWriter();
   		out.write(str);
  1. 接受到的json数据分页
 $.ajax({                       
                     url: '/queryIdCards.do' ,  
                     type: 'GET',  
                     data:{"parsingTime":parsingTime,"curPage":curPage,"pageSize":pageSize},
                     dataType: "json",
                     async: false,
                     ContentType: "application/json; charset=utf-8",
                     beforeSend: function(){
                         // Handle the beforeSend event
                        var initData = '<td>' + '#' +'</td>' + '<td>' + 
						'证号' +'</td>'+'<td>'+ 
						'姓名' +'</td>'+'<td>'+ 
						'性别' +'</td>'+'<td>'+ 
						'民族' +'</td>'+'<td>'+ 
						'出生日期' +'</td>'+'<td>'+ 
						'地址'+'</td>'+'<td>'+ 
						'签发机关'+'</td>'+'<td>'+ 
						'有效期'+'</td>'+'<td>'+ 
						'识别日期'+'</td>';
                     $("#tabletest").html('<tr>'+ initData +'</tr>');
                          
                     },
                     success: function (result) {
                    debugger;
                    	var idCards = result.idCards;
						//每次搜索 初始化页面数据  第一页 每页10条
			        	$("#curPage").val(result.curPage);//当前页数
			        	$("#totalPage").val(result.totalPage);//一共多少页  后台传值
			        	$("#pageSize").val(result.pageSize);   //每页多少条    	
			        	$("#totalNum").val(result.totalNum); //一共多少条
                     for(var i=0;i < result.idCards.length;i++)
                     {                   
						var cardNo = result.idCards[i].cardNo==undefined? "":result.idCards[i].cardNo;
						var name = result.idCards[i].name==undefined? "":result.idCards[i].name;
						var sex = result.idCards[i].sex==undefined? "":result.idCards[i].sex;
						var folk = result.idCards[i].folk==undefined? "":result.idCards[i].folk;
						var birthday = result.idCards[i].birthday==undefined? "":result.idCards[i].birthday;
						var address = result.idCards[i].address==undefined? "":result.idCards[i].address;
						var issueAuthority = result.idCards[i].issueAuthority==undefined? "":result.idCards[i].issueAuthority;
						var validUntil = result.idCards[i].validUntil==undefined? "":result.idCards[i].validUntil;
						var parsingTime = result.idCards[i].parsingTime==undefined? "":result.idCards[i].parsingTime;
						
						var tableData = '<td>' + i +'</td>' + '<td>' + 
						cardNo +'</td>'+'<td>'+ 
						name +'</td>'+'<td>'+ 
						sex+'</td>'+'<td>'+ 
						folk+'</td>'+'<td>'+ 
						birthday+'</td>'+'<td>'+ 
						address+'</td>'+'<td>'+ 
						issueAuthority+'</td>'+'<td>'+ 
						validUntil+'</td>'+'<td>'+ 
						parsingTime+'</td>';
                     //debugger;
                     $("#tabletest").append('<tr>'+ tableData +'</tr>');                  
                     } 
                     
                   }
              });
  1. 分页代码
$(function(){
        //getByPageBean(1);
        $("#search").click(function(){
        	debugger;
        	//每次搜索 初始化页面数据  第一页 每页10条
        	$("#curPage").val(1);//当前页数
        	//$("#totalPage").val(5);//一共多少页  后台传值
        	$("#pageSize").val(10);   //每页多少条    	
        	//$("#totalNum").html(60); //一共多少条
        	getIdCards();
        });
         $("#firtPage").click(function(){
        	debugger;
        	
        	//每次搜索 初始化页面数据  第一页 每页10条
        	$("#curPage").val(1);//当前页数
        	//$("#totalPage").val(5);//一共多少页  后台传值
        	$("#pageSize").val(10);   //每页多少条    	
        	//$("#totalNum").html(60); //一共多少条
        	getIdCards();
        });
        //上一页
        $("#lastPage").click(function(){
        	debugger;
        	var curPage = document.getElementById("curPage").value;
        	if(curPage > 1){
        	var curPageChenge = parseInt(curPage) - 1;
        	//每次搜索 初始化页面数据  第一页 每页10条
        	$("#curPage").val(curPageChenge);//当前页数
        	//$("#totalPage").val(5);//一共多少页  后台传值
        	$("#pageSize").val(10);   //每页多少条    	
        	//$("#totalNum").html(60); //一共多少条
        	getIdCards();
        	
        	}
        	
        });
         $("#nextPage").click(function(){
        	debugger;
        	var curPage = document.getElementById("curPage").value;
        	var totalPage = document.getElementById("totalPage").value;
        	if(totalPage > curPage){
        	var curPageChenge = parseInt(curPage) + 1;
        	//每次搜索 初始化页面数据  第一页 每页10条
        	$("#curPage").val(curPageChenge);//当前页数
        	//$("#totalPage").val(5);//一共多少页  后台传值
        	$("#pageSize").val(10);   //每页多少条    	
        	//$("#totalNum").html(60); //一共多少条
        	getIdCards();
        	     	     	
        	}
        	
        });
        
         $("#end").click(function(){
        	debugger;
        	var curPage = document.getElementById("curPage").value;
        	var totalPage = document.getElementById("totalPage").value;
        	if(totalPage > curPage){
	        	//每次搜索 初始化页面数据  第一页 每页10条
	        	$("#curPage").val(totalPage);//当前页数
	        	//$("#totalPage").val(5);//一共多少页  后台传值
	        	$("#pageSize").val(10);   //每页多少条    	
	        	//$("#totalNum").html(60); //一共多少条
	        	getIdCards();
        	}
        	
        });
    });
  1. 页面

		<form class="form-inline" role="form">
			  <ul class="pager">
			     <li>
			     当前第
			  <input type="text" id="curPage" name="curPage" readonly="readonly" class="form-control" value="0"  style="width: 50px"/>/<input type="text" id="totalPage" name="totalPage" readonly="readonly" class="form-control" value="0" style="width: 50px"/>
			     页  每页
			  <input type="text" id="pageSize" name="pageSize" readonly="readonly" class="form-control" value="0" style="width: 50px"/>/<input type="text" id="totalNum" name="totalNum" readonly="readonly"  class="form-control" value="0" style="width: 50px"/></li>			     
			    <li><a id="firtPage" page="1">首页</a></li>
			    <li ><a id="lastPage" page="${curPage-1}">上一页</a></li>			        			   
			    <li ><a id="nextPage" page="${curPage+1}">下一页</a></li>
			    <li ><a id="end"  page="${totalPage}">尾页</a></li>
			    <li ><a id="go">GO</a></li>
			  </ul>
		</form>
			
  1. Form表单的异步提交
				<div class="data-view" data-label="确认结果" id="formOnline_div" high>
						<form id="formOnline" onsubmit="return false" action="##" method="POST">
							<div class="form-group">
								<div class="col-sm-12 control-div">
								<label class="col-sm-12 control-label" for="gender">姓名</label>
									<input id="name" name="name" value="${name}" class="form-control" type="text"
										placeholder="请输入" class="input-large" check-type="required">
								</div>
							</div>
							<!-- Text input-->
							<div class="form-group">
								<div class="col-sm-12 control-div">
									<label class="col-sm-12 control-label" for="birthday">出生</label>
									<input id="birthday" name="birthday" value='<fmt:formatDate value="${birthday}"/>' class="form-control" type="text"
										placeholder="请输入" class="input-large" check-type="required">
								</div>
							</div>
							<link rel="stylesheet" href="staticresoure/datetime/css/bootstrap-datetimepicker.min.css">
							<script type="text/javascript" src="staticresoure/datetime/js/bootstrap-datetimepicker.js"></script>
							<script type="text/javascript" src="staticresoure/datetime/js/locales/bootstrap-datetimepicker.zh-CN.js"  charset="UTF-8"></script>
							<script type="text/javascript">
							$('#birthday').datetimepicker({
								format: 'yyyy-mm-dd', // 格式, 'mm/dd/yyyy'
								minView: 2, //最精确的时间选择视图, 0
								language: 'zh-CN', // 语言, en
								todayBtn: true, //是否显示今天按钮, false
								todayHighlight: true, // 高亮当前日期, false
								//initialDate: new Date(), // 初始时间, new Date()
							}); 
							</script>
							
							<!-- Button (Double) -->
							<%-- onclick="window.location.href='dept_update.action?t=edit&deptno=<%=dept.getDeptno() %>'"  --%>
							<div class="form-group">
								<label class="col-sm-3 control-label" for="save"></label>
								<div class="col-sm-2 control-div">
									<button id="save" name="save" class="btn btn-success" onclick="formSubmit()">保存</button>
									<!--<button type="button" class="btn-primary" style="display:none" id="upload-scan-photo-idcard" onclick="$('#demo-phototype-upload').attr('checked',true);doUploadCheck();">上传并检测</button>-->
									<!-- <button id="reset"  type="reset"   name="reset"  class="btn btn-danger">重置</button> -->
								</div>
							</div>
						</form>
					</div>
  1. 由于后台用的是hibernate进行查询 不能使用limit进行分页
@SuppressWarnings("unchecked")
	public List<IdCard> queryIdCard(final String hql,final int firstNum,final int sumNum,final Object[] params) {
		try {
			return (List<IdCard>)getHibernateTemplate().execute(new HibernateCallback() {
				@SuppressWarnings("unchecked")
				@Override
				public List<IdCard> doInHibernate(Session session) throws HibernateException, SQLException {
					Query query = session.createQuery(hql);
					if(params != null && params.length > 0)
					{
						for(int i=0,length=params.length;i<length;i++)
						{
							query.setDate(i, (Date)params[i]);
						}
					}
					query.setFirstResult(firstNum);
					query.setMaxResults(sumNum);
					List<IdCard> list = (List<IdCard>)query.list();
					if(list != null && list.size() > 0)
					{
						return list;
					}
					return null;
				}
			});
		} catch (Exception e) {
			logger.error("DAO异常:"+e.getMessage());
		}
		return null;
	}

结尾

小白一枚,不喜勿喷 _

[1]: 参考了很多文档 就不列出来了

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值