利用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。
也就是这样写即可:

function pageAjax(){
 var url="${ctx}/system/conProductInfo/listOfAjax.action";
 $.pageAjax(url,"productMessageDiv","showList");
 }

productMessageDiv:这个就是你预先隐藏的div如下:

<div style="display: none;">
 <div id="productMessageDiv" class="showParentDiv" style="width:950px;height:400px">
  <div id="showProductListMsg">
   <div class="grayBg">
    <div id="toolbarScroll">
    <span>
     <input type="button" value=" 确定 " onclick="submitProductMessage();"/>
     <input type="button" value=" 取消 " onclick="closeProduct();"/>
     <input type="button" value=" 查询 " onclick="selectProduct();" />
     <input id="value" name="value" type="text" class="width_132"/>
     <select id="key" name="key" class="width_115">
     </select>
    </span>
    </div>
   <div class="page" id="page">
    <jsp:include page="/portal/common/page/page_ajax.jsp"/>
   </div>
   <div class="clearFloat"></div>
   </div>
  <div class="scrollInfo">
   <div class="tableInfo" style="overflow-y:scroll; height:365px;">
    <table id="dragTable" border="0" cellpadding="0" cellspacing="0" id="listTable">
    <thead>
     <tr>
     <td width="4%">
      <input type="checkbox" id="selectallCheckBox" onclick="selectListall();"/>
     </td>
     <td width="%">产品编码</td>
     <td width="%">产品名称</td>
     <td width="%">产品型号</td>
     <td width="%">产品品牌</td>
     <td width="%">产品分类</td>
     <td width="%">供应商</td>
     <td width="%">产品规格</td>
     </tr>
    </thead>
    <tbody id="msgContent"> 

    </tbody>
    </table>
   </div>
  </div> 

showList这个就是你得到回调数据调用的方法:

function showList(data){
 var list=data.list;
  var str;
  if(list==""||list==null){
  str="<tr><td colspan=\"9\"><span class=\"tip\">系统无纪录!</span></td></tr>";
  }else{
  for(var i=0;i<list.length;i++){
  str=str+" <tr id=\"contentTr"+i+"\"><td><input name=\"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("<option value='productName'>产品名称</option><option value='productCode'>产品编号</option>");
  $("#msgContent").empty();
  $("#msgContent").append(str);
 } 

复杂点的东西在page_ajax.jsp里头

var ajaxUrl;
var showDivName;
var ajaxFunctionName;
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) {
 var totalCount = data.totalCount;
 changeDefaultRows(data);
 var pageCount = totalCount % parseInt($("#pageRows").val())== 0 ?
   parseInt(totalCount/parseInt($("#pageRows").val())):
   parseInt(totalCount/parseInt($("#pageRows").val()))+1;
 $("#totalPage").html(pageCount+'');
 $("#totalCount").html(totalCount+'');
 changeButton(pageCount);
 }
}); 

function changePage(pageTitle) {
 if(pageTitle == "previous"){
 $('#pagePage').val(parseInt($('#pagePage').val()) - 1);
 }else if(pageTitle == "next"){
 $('#pagePage').val(parseInt($('#pagePage').val()) + 1);
 }else if(pageTitle == "first"){
 $('#pagePage').val(1);
 }else if(pageTitle == "last"){
 var totalCount = parseInt($('#totalCount').html());
 $('#pagePage').val(parseInt((totalCount - 1) / parseInt($('#pageRows').val()) + '') + 1);
 }
 go();
} 

function goToPointedPage(){
 var pointedPageNum = $('#forwardPageNum').val();
 var patrn = /^\+?[1-9][0-9]*$/;
 if(!patrn.exec(pointedPageNum)){
 alert('页数请输入正整数');
 return;
 }
 if(parseInt(pointedPageNum) > parseInt($('#totalPage').html())){
 alert('输入页数不得超过最大页数');
 return;
 }
 $('#pagePage').val(parseInt(pointedPageNum));
 go();
} 

function changeButton(pageCount){
 $('#forwardPageNum').val($('#pagePage').val());
 if(pageCount == 1){
 $("#beforePage").attr("disabled","disabled");
 $("#firstPage").attr("disabled","disabled");
 $("#nextPage").attr("disabled","disabled");
 $("#lastPage").attr("disabled","disabled");
 }else if($("#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");
 }
} 

function changeDefaultRows(data){
 if($("#pageRows").val()==null||$("#pageRows").val()==""){
 $("#pageRows").empty();
 $("#pageRows").append("<option value='"+data.pAGESIZES[0]+"'>默认条数</option><option value='"+data.pAGESIZES[1]+"'>"+data.pAGESIZES[1]+"</option><option value='"+data.pAGESIZES[2]+"'>"+data.pAGESIZES[2]+"</option>");
 }
} 

function changeRows(){
 $('#pagePage').val(1);
 go();
}
function go(){
 $.pageAjax(ajaxUrl,showDivName,ajaxFunctionName);
} 

function clearPageInfo(){
 $("#pagePage").val('1');
} 

$(function(){
 $("body").keydown(function(event){
  if(event.keyCode == 13){
  goToPointedPage();
 }
 });
}); 

</script>
<div class="toolbarScroll">
 <s:hidden name="pageRequest.page" id="pagePage"/>
 <input id="firstPage" value=" 首页 " type="button" onclick="changePage('first')"/>
 <input id="beforePage" value=" 上一页 " type="button" onclick="changePage('previous')"/>
 <input size="6" maxlength="3" id="forwardPageNum" class="formStylePage" onblur="goToPointedPage()" value="" type="text" style="text-align: center;"/>/
 <span class="currentPage" id="totalPage">
 </span>
 <input id="nextPage" value=" 下一页 " type="button" onclick="changePage('next')"/>
 <input id="lastPage" value=" 末页 " type="button" onclick="changePage('last')"/>
 共<span id="totalCount"></span>条
 <span>
 <select id="pageRows" name="pageRequest.rows" onchange="changeRows()"></select>
 </span>
</div>

要明白ajax请求的时候是刷新你特定的部门,我一开始就在这里出了问题。其实在做分页的时候,给后台传值,只是当前页和每页的显示个数,其他没了,分页的按钮和下方的列表是分离的,不用去联系,这样能使问题简单。时间有限就这样了,仔细看代码就可以了。

想要了解更多内容请参考专题:《jquery分页功能操作》

以上就是本文的全部内容,希望对大家学习jquery程序设计有所帮助。

(0)

相关推荐

  • 用jQuery中的ajax分页实现代码

    功能简介:主要功能就是分页显示数据了,可在配置文件中配置每页要显示的页码,可以做多条件联合查询,这里只是做一个简单的查询.欢迎拍砖,有问题的还望大虾们斧正哈.看看这个效果图,无刷新的噢!! 具体实现请看源码: 1.aspx页面 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxPage.aspx.cs" Inherits="Measur

  • 基于Jquery+Ajax+Json的高效分页实现代码

    如果说您没用过这些东东的话,我相信看完这篇博文会对您有帮助的,,如果有任何问题不懂或者有bug没问题,欢迎随时联系我, 同时也欢迎高手多给点意见,我不建议在喷子中成长. 本人QQ:364175837 前言 相信很多朋友都用过,Jquery的分页插件,我之前就用的jquery.paper这个,如果有兴趣可以留下QQ,我发份简单的实例源码给您. 该代码是晚上匆忙中完成的,所以没怎么优化,但是主要作为实例来结合这些知识的一个综合运用.好了废话不多说,直接上代码. vs2010+sql2005expre

  • jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解

    本文使用jQuery,结合PHP和Mysql,通过实例讲解如何实现Ajax数据加载效果. HTML <div id="list"> <ul></ul> </div> <div id="pagecount"></div> 页面中,#list用来展示数据列表,包括本例要展示的商品图片和标题,#pagecount用来展示分页条,即本例中的上一页.下一页. 当然,别忘了,在head中预先载入jquery

  • JQuery+Ajax无刷新分页的实例代码

    先看效果图: 实现原理很简单,使用了jquery.pagination这个插件,每当点击页码时异步去服务器去取该页的数据,简单介绍如下: 一.数据库表结构:很简单  就四个字段 分别是News_id  News_title  News_time  News_readtimes 二.前台页面代码: 复制代码 代码如下: <head runat="server">    <title>JQuery无刷新分页</title>    <link hre

  • 使用PHP+JQuery+Ajax分页的实现

    为了锻炼下JQuery,决定自己动手写写分页 最终的效果如图: 点击某个字母后,下方显示以该字母为首字母的所有词语: 分页显示,每页显示15个词语,每组页码有20个,1-20/20-40--- 首先是在PHP文件中的分页Pager的相关代码 复制代码 代码如下: public function searchWordsByInitial() {               //从AJAX发出的URL中获得参数:用户点击的字母和点击的页码            $initial = htmlenti

  • 使用Jquery+Ajax+Json如何实现分页显示附JAVA+JQuery实现异步分页

    先给大家展示下运行效果图:  1.后台action产生json数据. List blackList = blackService.getBlackInfoList(mobileNum, gatewayid, startDate, endDate); int totalRows = blackList.size(); StringBuffer sb = new StringBuffer(); sb.append("{\"totalCount\":\""+to

  • jQuery实现分页功能(含ajax请求、后台数据、附完整demo)

    需求分析 1)需要首页,末页功能 2)有点击查看上一页,下一页功能 3)页码到当前可视页码最后一页刷新页面 实现思路 也是分为三部分处理 1)点击首页,末页直接显示第一页或者最后一页内容,当前页面为第1页或者最后一页.隐藏首页或者末页按钮.demo 显示截图 首页状态 和 末页状态代码执行结果截图 2)点击可视页码截图 3)点击上一页或者下一页,,需要刷新页码状态时截图,昨天表示当前页码为7,右图是点击上一页,刷新页码时的状态 代码参数说明 <script src="js/jquery-1

  • JS+Ajax+Jquery实现页面无刷新分页以及分组 超强的实现第1/2页

    复制代码 代码如下: <%@ Page language="c#" Codebehind="GroupText.aspx.cs" AutoEventWireup="false" Inherits="test1.GroupText" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML&g

  • JQuery+Ajax实现数据查询、排序和分页功能

    之前很少会用javascript去实现页功能主要怕麻烦,但了解JQuery后这种想法发生了变化:有了这样的脚本组件就可以在编写脚本时方便和HTML隔离出来,这样编写高重用性的脚本就更方便.下面就是介绍在学习JQuery过程中编写的基于Ajax的数据查询.排序和分页功能的复用脚本,只要遵循脚本的某些规则描述HTML把脚本文件引入就可以方便实现以上描述的功能. 先看下实现功能的代码: /**应用脚本规则: 引用脚本: JQuery脚本和JQuery的form插件脚本 Form的ID: viewfor

  • 利用jQuery中的ajax分页实现代码

    本文实例讲解了用jQuery中的ajax分页相关代码,分享给大家供大家参考,具体内容如下 把分页封装到一个jsp里,那么大家就可以通过include的方式引入分页的页面这里起名为page_ajax.jsp 本人封装后,使用者需要在页面中引入page_ajax.jsp,并且在查询列表的时候,点击按钮,调用自定义的方法,如myFunction(),在这个方法里头,调用自己拓展的jquer方法,$.pageAjax(url,functionName,showDIv); 这里的url是你要请求的ajax

  • Asp.net MVC 中利用jquery datatables 实现数据分页显示功能

    1.Controller中的方法代码如下: 由于方法中的存储过程没有带分页参数,所以还可以有继续优化的空间. /// <summary> /// 获取测点列表 /// </summary> /// <returns></returns> [HttpPost] public JsonResult GetMeasurePointList(string TreeID, string TreeType, int sEcho, int iDisplayStart, i

  • jQuery中使用Ajax获取JSON格式数据示例代码

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于"名称"和"值"的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中可以使用Ajax或者 $.getJSON()方法实现. 下面就使用jQuery读取music.txt文件中的JSON数据格式信息. 首先,music.txt中的内容如下: 复制代码 代码如下: [ {"optionKey":"1"

  • javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】

    本文实例讲述了javascript和 jQuery中的AJAX技术.分享给大家供大家参考,具体如下: 1.什么是AJAX? AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面.

  • jquery中的ajax异步上传

    找了好久终于在网上找到了ajax异步上传文件的方法,不过网上大多数是php的 ,我改为struts2写的 大同小异,希望对学习java的人有一定的帮助.我上传的是音乐文件. ajaxfileupload.js这个js文件是主要文件,一定要导入. jsp页面 ,其中我还做了div的隐藏***************************** <%@ page language="java" import="java.util.*" pageEncoding=&

  • jquery中的ajax同步和异步详解

    之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题.最近的项目用了到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除. 而异步则这个AJAX代码运行中的时候其他代码一样可以运行. jquery的async:false,这个属性 默认是true:异步,false:同步. $.ajax({ type: "post", url: "

  • jQuery中的ajax async同步和异步详解

    项目中有这样一个需求,使用ajax加载数据返回页面并赋值,然后前端取出该值 这其中涉及到代码的顺序问题,有时后台还未返回数据,但已执行后面代码, 所以就会造成取不到值 $.ajax({ type: "post", url: "admin/PfmOptionRuleItem.do", success: function(data){ $("#ruleItem").val(data.ruleItem); //① } }); return $(&quo

  • jquery中的ajax方法怎样通过JSONP进行远程调用

    关于JSONP的概念和为什么要使用JSONP网上已经有很多教程,这一节主要演示下在JQUERY中的ajax方法怎样通过JSONP进行远程调用 首先介绍下$.ajax的参数 type:请求方式 GET/POST url:请求地址 async:布尔类型,默认为true 表示请求是否为异步,如果为false表示为同步. dataType:返回的数据类型 jsonp:传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback:自定义的js

  • 在jquery中的ajax方法怎样通过JSONP进行远程调用

    关于JSONP的概念和为什么要使用JSONP网上已经有很多教程,这一节主要演示下在JQUERY中的ajax方法怎样通过JSONP进行远程调用 首先介绍下$.ajax的参数 type:请求方式 GET/POST url:请求地址 async:布尔类型,默认为true 表示请求是否为异步,如果为false表示为同步. dataType:返回的数据类型 jsonp:传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback:自定义的js

随机推荐