利用jQuery中的ajax分页实现代码
本文实例讲解了用jQuery中的ajax分页相关代码,分享给大家供大家参考,具体内容如下
把分页封装到一个jsp里,那么大家就可以通过include的方式引入分页的页面这里起名为page_ajax.jsp
本人封装后,使用者需要在页面中引入page_ajax.jsp,并且在查询列表的时候,点击按钮,调用自定义的方法,如myFunction(),在这个方法里头,调用自己拓展的jquer方法,$.pageAjax(url,functionName,showDIv);
这里的url是你要请求的ajax的url,functionName为你要得到回调数据后处理拼串给tbody动态赋值的方法,而showDIv是你隐藏的div。
也就是这样写即可:
functionpageAjax(){
varurl="${ctx}/system/conProductInfo/listOfAjax.action";
$.pageAjax(url,"productMessageDiv","showList");
}
productMessageDiv:这个就是你预先隐藏的div如下:
<divstyle="display:none;"> <divid="productMessageDiv"class="showParentDiv"style="width:950px;height:400px"> <divid="showProductListMsg"> <divclass="grayBg"> <divid="toolbarScroll"> <span> <inputtype="button"value="确定"onclick="submitProductMessage();"/> <inputtype="button"value="取消"onclick="closeProduct();"/> <inputtype="button"value="查询"onclick="selectProduct();"/> <inputid="value"name="value"type="text"class="width_132"/> <selectid="key"name="key"class="width_115"> </select> </span> </div> <divclass="page"id="page"> <jsp:includepage="/portal/common/page/page_ajax.jsp"/> </div> <divclass="clearFloat"></div> </div> <divclass="scrollInfo"> <divclass="tableInfo"style="overflow-y:scroll;height:365px;"> <tableid="dragTable"border="0"cellpadding="0"cellspacing="0"id="listTable"> <thead> <tr> <tdwidth="4%"> <inputtype="checkbox"id="selectallCheckBox"onclick="selectListall();"/> </td> <tdwidth="%">产品编码</td> <tdwidth="%">产品名称</td> <tdwidth="%">产品型号</td> <tdwidth="%">产品品牌</td> <tdwidth="%">产品分类</td> <tdwidth="%">供应商</td> <tdwidth="%">产品规格</td> </tr> </thead> <tbodyid="msgContent"> </tbody> </table> </div> </div>
showList这个就是你得到回调数据调用的方法:
functionshowList(data){
varlist=data.list;
varstr;
if(list==""||list==null){
str="<tr><tdcolspan=\"9\"><spanclass=\"tip\">系统无纪录!</span></td></tr>";
}else{
for(vari=0;i<list.length;i++){
str=str+"<trid=\"contentTr"+i+"\"><td><inputname=\"selectIds\"type=\"checkbox\"value=\""+list[i].id+"\"/></td><td>"+list[i].productCode+"</td><td>"+list[i].productName+"</td><td>"+list[i].productType+"</td><td>"+list[i].brandName+"</td><td>"+list[i].typeName+"</td><td>"+list[i].companyShortname+"</td><td>"+list[i].productCode+"</td></tr>";
}
}
if($('#key').val()==""||$('#key').val()==null)$('#key').append("<optionvalue='productName'>产品名称</option><optionvalue='productCode'>产品编号</option>");
$("#msgContent").empty();
$("#msgContent").append(str);
}
复杂点的东西在page_ajax.jsp里头
varajaxUrl;
varshowDivName;
varajaxFunctionName;
jQuery.extend({
pageAjax:function(url,div,functionName){
ajaxUrl=url;
showDivName=div;
ajaxFunctionName=functionName;
$.ajax({
url:url,
data:{"pageRequest.page":$('#pagePage').val(),"pageRequest.rows":$('#pageRows').val()},
dataType:"json",
success:function(data){
eval(functionName+"(data)");
$.changePageAjax(data);
showWin(div);
}
});
},
pageAjaxOfParam:function(url,div,functionName,key,value){
$.ajax({
url:url,
data:{"pageRequest.page":$('#pagePage').val(),"pageRequest.rows":$('#pageRows').val(),"key":key,"value":value},
dataType:"json",
success:function(data){
eval(functionName+"(data)");
$.changePageAjax(data);
showWin(div);
}
});
}
,
changePageAjax:function(data){
vartotalCount=data.totalCount;
changeDefaultRows(data);
varpageCount=totalCount%parseInt($("#pageRows").val())==0?
parseInt(totalCount/parseInt($("#pageRows").val())):
parseInt(totalCount/parseInt($("#pageRows").val()))+1;
$("#totalPage").html(pageCount+'');
$("#totalCount").html(totalCount+'');
changeButton(pageCount);
}
});
functionchangePage(pageTitle){
if(pageTitle=="previous"){
$('#pagePage').val(parseInt($('#pagePage').val())-1);
}elseif(pageTitle=="next"){
$('#pagePage').val(parseInt($('#pagePage').val())+1);
}elseif(pageTitle=="first"){
$('#pagePage').val(1);
}elseif(pageTitle=="last"){
vartotalCount=parseInt($('#totalCount').html());
$('#pagePage').val(parseInt((totalCount-1)/parseInt($('#pageRows').val())+'')+1);
}
go();
}
functiongoToPointedPage(){
varpointedPageNum=$('#forwardPageNum').val();
varpatrn=/^\+?[1-9][0-9]*$/;
if(!patrn.exec(pointedPageNum)){
alert('页数请输入正整数');
return;
}
if(parseInt(pointedPageNum)>parseInt($('#totalPage').html())){
alert('输入页数不得超过最大页数');
return;
}
$('#pagePage').val(parseInt(pointedPageNum));
go();
}
functionchangeButton(pageCount){
$('#forwardPageNum').val($('#pagePage').val());
if(pageCount==1){
$("#beforePage").attr("disabled","disabled");
$("#firstPage").attr("disabled","disabled");
$("#nextPage").attr("disabled","disabled");
$("#lastPage").attr("disabled","disabled");
}elseif($("#forwardPageNum").val()<pageCount){//如果页数比总页数小,则下一页和末页能用
$("#nextPage").removeAttr("disabled");
$("#lastPage").removeAttr("disabled");
if($("#forwardPageNum").val()>1){//如果页数大于1,说明1<页数<总页数说明全部都可用
$("#firstPage").removeAttr("disabled");
$("#beforePage").removeAttr("disabled");
}else{//在页数比总页数小的其他情况下,就只存在一种就是等于1
$("#firstPage").attr("disabled","disabled");//当等于1的时候,首页和上一页不可用
$("#beforePage").attr("disabled","disabled");
}
}else{
$("#beforePage").removeAttr("disabled");
$("#firstPage").removeAttr("disabled");
$("#nextPage").attr("disabled","disabled");
$("#lastPage").attr("disabled","disabled");
}
}
functionchangeDefaultRows(data){
if($("#pageRows").val()==null||$("#pageRows").val()==""){
$("#pageRows").empty();
$("#pageRows").append("<optionvalue='"+data.pAGESIZES[0]+"'>默认条数</option><optionvalue='"+data.pAGESIZES[1]+"'>"+data.pAGESIZES[1]+"</option><optionvalue='"+data.pAGESIZES[2]+"'>"+data.pAGESIZES[2]+"</option>");
}
}
functionchangeRows(){
$('#pagePage').val(1);
go();
}
functiongo(){
$.pageAjax(ajaxUrl,showDivName,ajaxFunctionName);
}
functionclearPageInfo(){
$("#pagePage").val('1');
}
$(function(){
$("body").keydown(function(event){
if(event.keyCode==13){
goToPointedPage();
}
});
});
</script>
<divclass="toolbarScroll">
<s:hiddenname="pageRequest.page"id="pagePage"/>
<inputid="firstPage"value="首页"type="button"onclick="changePage('first')"/>
<inputid="beforePage"value="上一页"type="button"onclick="changePage('previous')"/>
<inputsize="6"maxlength="3"id="forwardPageNum"class="formStylePage"onblur="goToPointedPage()"value=""type="text"style="text-align:center;"/>/
<spanclass="currentPage"id="totalPage">
</span>
<inputid="nextPage"value="下一页"type="button"onclick="changePage('next')"/>
<inputid="lastPage"value="末页"type="button"onclick="changePage('last')"/>
共<spanid="totalCount"></span>条
<span>
<selectid="pageRows"name="pageRequest.rows"onchange="changeRows()"></select>
</span>
</div>
要明白ajax请求的时候是刷新你特定的部门,我一开始就在这里出了问题。其实在做分页的时候,给后台传值,只是当前页和每页的显示个数,其他没了,分页的按钮和下方的列表是分离的,不用去联系,这样能使问题简单。时间有限就这样了,仔细看代码就可以了。
想要了解更多内容请参考专题:《jquery分页功能操作》
以上就是本文的全部内容,希望对大家学习jquery程序设计有所帮助。