`
jiangcs520
  • 浏览: 3556 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

基于Ajax的分页

 
阅读更多

自己的技术还有很大的提升空间,有些技术学了一下过了一段时间就会渐渐淡忘了,所以想记录一些自己测试过的写过的一些技术,希望对自己对别人都会有益。 废话就不多讲了,最近学着写分页的代码,最基本最核心的部分就是分页查询数据库,有人说是三级查询,其实二级查询应该就可以了吧,就拿emp表举个例子

select emp.* from (select rownum as num,emp.* from emp where rownum<pagesize+pagebegin) where num>pagebegin;

本来是想做个整个页面刷新的换页,但是学了Ajax之后可以实现部分刷新,不用整个页面,所以就想实现一下。但是可能需要比整个页面刷新多写点东西,而且还有一个原因是学到了一种比较方便的利用Ajax与服务器交互数据的方法,先向一个servlet页面发起请求,代码如下:

<script type="text/javascript">
				var xmlrequest=0;
				function changePage(pageno)
				{
					if(window.XMLHttpRequest)
					{
					   xmlrequest=new XMLHttpRequest();
					}
					else if(window.ActiveXObject)
					{
						try{xmlrequest=new ActiveXObject(Msxml2.XMLHTTP);}
						catch(e){xmlrequest=new ActiveXObject(Microsoft.XMLHTTP);}
					}
					if(!xmlrequest)
					{
					    alert("您out很久了!!!");
					}
					xmlrequest.onreadystatechange=haolejiaowo;
					var url="servlet/DepartPageByAjax?flag="+pageno;
					xmlrequest.open("get",url,true);
					xmlrequest.send(null);
				}
				function haolejiaowo()
				{
				    if(xmlrequest.readyState==4 && xmlrequest.status==200)
				    {
				    	
				        alert(xmlrequest.responseText);
				        document.getElementById('pageContent').innerHTML=xmlrequest.responseText;
				    }
				}
	</script>
	
  </head>
  
  <body>
	 	
		<%	DepartDao departdao=new DepartDao();
			int count=departdao.getCountOfTitle();
			int pages=0;
			ArrayList firstPagelist=null;
			if(count%5==0)
			{
			    pages=count/5;
			}
			else
			{
				pages=count/5+1;
			}
			if(pages>1)
			{
				firstPagelist=departdao.departPage("5","1");
				System.out.println("总共有:"+firstPagelist.size());
				//isbn,title,editionNumber,copyright,imageFile,price
				%>
		<table border="1">
		<tr><td>isbn</td><td>title</td><td>editionNumber</td><td>copyright</td><td>imageFile</td><td>price</td></tr>
		<tr><td colspan="6">
		<div id="pageContent">
		<table>
					<%
					for(int i=0;i<firstPagelist.size();i++)
					{
						BookTitleBean btBean=(BookTitleBean)firstPagelist.get(i);
						%>
						<tr>
						<td><%=btBean.getIsbn() %></td>
						<td><%=btBean.getTitle() %></td>
						<td><%=btBean.getEditionNumber() %></td>
						<td><%=btBean.getCopyRight() %></td>
						<td><%=btBean.getImageFile() %></td>
						<td><%=btBean.getPrice() %></td>
						</tr>
						<%
					}
					 %>
		</table>
		</div>
		
		</td></tr>
		</table>
				<%
				for(int i=0;i<pages;i++)
				{
					%>
					<a href="javascript:changePage('<%=i+1 %>')"><%=i+1 %></a>
					<%
				}
			}
			
		%>
		
				
		 <input type="button" name="btnLast" value="上一页" onclick="changePage('last')">
		 <input type="button" name="btnNext" value="下一页" onclick="changePage('next')">
		 
  </body>
</html>

 这段jsp页面包括了切换页面的按钮,以及向一个servlet页面发起请求,然后在servlet页面中处理请求,说得简单点就是判断用户需要的页码,代码如下:

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("DepartPageByAjax.java");
		DepartDao departdao=new DepartDao();
		int count=departdao.getCountOfTitle();
		String flag=request.getParameter("flag");
		int pages=0;
		HttpSession session=request.getSession();
		String curr=(String)session.getAttribute("currPage");
		int currPage=1;
		if(curr!=null)
		{
			currPage=Integer.parseInt(curr);
		}
		if(count%5==0)
		{
		    pages=count/5;
		}
		else
		{
			pages=count/5+1;
		}
		if("next".equals(flag))//next page
		{
			if(currPage<pages)
			{
				currPage++;
			}
		}
		else if("last".equals(flag))//上一页
		{
			if(currPage>1)
			{
				currPage--;
			}
		}
		else if(Integer.parseInt(flag)>=1&&Integer.parseInt(flag)<=count)
		{
			currPage=Integer.parseInt(flag);
		}
		session.setAttribute("currPage", currPage+"");
		System.out.println("总共"+pages+"页");
		response.sendRedirect("../result.jsp?pageNo="+currPage);
	}

 这个处理的一个简单的思想就是将页码请求与上下页切换两种方式分开处理,然后计算出用户需要的页码,每次计算出当前页之后要将此页码存入session,因为下一次的页面请求都是基于本页面的页码,举个例子:用户请求的当前页是5,当请求下一页的时候,需要将5加1,前提就是我们得保存当前的那个5,当然了如果用户直接选择页码,那就直接进入第三个if语句,但是这个页码也要保存入session,这个是一样的道理。最后就是利用到一个result.jsp的中间页面,并将请求的当前页传过去,让这个中间页查询数据库,并将数据做成相应表格,会由responseText返回给请求的jsp页面,代码如下:

 <%
	  DepartDao departDao=new DepartDao();
	  String pageno=request.getParameter("pageNo");
	  System.out.println(pageno+"***********");
	  ArrayList list=departDao.departPage("5",((Integer.parseInt(pageno)-1)*5+1)+"");
	  
	   %>
	   <table>
	   		  <%
	   		  	for(int i=0;i<list.size();i++)
	   		  	{
	   		  	    BookTitleBean btBean=(BookTitleBean)list.get(i);
	   		  		%>
	   		  		<tr>
	   		  		<td><%=btBean.getIsbn() %></td>
	   		  		<td><%=btBean.getTitle() %></td>
					<td><%=btBean.getEditionNumber() %></td>
					<td><%=btBean.getCopyRight() %></td>
					<td><%=btBean.getImageFile() %></td>
					<td><%=btBean.getPrice() %></td>
	   		  		</tr>
	   		  		<%
	   		  	}
	   		  
	   		   %>
	   </table>

 这个基于Ajax的技术就算完了,虽然比较简单,但是这个方法个人觉得还是比较不错的,局部刷新总比整个页面刷新来得好。提供的代码只是做个参考,并不全的,要是有需要源码的可以联系我:QQ478283225 都是学技术的,可以交个朋友,呵呵

分享到:
评论

相关推荐

    jquery前端基于ajax分页插件《jquery.esaypage》

    基于jquery扩展的前端分页插件,只需要将注重点放在后面json数据上,前端只需要遍历表格数据就可完成整个前端的分页操作。 PS:如遇BUG请自行修改 使用请引入css和js $("div").easyPage(url,param,function(data){ $...

    基于 ajax 实现的分页查询

    "基于Ajax实现的分页查询"是一种现代的、异步的技术,它使得页面无需刷新即可更新内容,极大地提高了交互性。下面将详细介绍Ajax在分页查询中的应用及实现过程。 一、Ajax基础 Ajax(Asynchronous JavaScript and ...

    ASP.NET+AJAX分页

    `jquery.pagination.js` 是一个基于jQuery的分页插件,它提供了一种方便的方式来实现AJAX分页。jQuery是一个流行的JavaScript库,简化了DOM操作、事件处理和Ajax交互等任务,使得JavaScript编程更加简单。 `README....

    jquery+ajax分页

    通过以上步骤,我们可以实现一个基本的jQuery + AJAX分页功能。在实际项目中,根据需求可能还需要考虑更多细节,如分页大小的调整、搜索和排序功能的集成等。总的来说,jQuery与AJAX的结合极大地提高了Web应用的交互...

    tp3.2+ajax无刷新分页

    6. **项目实例**:除了理论知识,实际的代码实例可以让开发者更好地理解和应用这些概念,通过阅读和调试代码,可以加深对ThinkPHP 3.2和Ajax分页的理解。 7. **用户体验**:无刷新分页提升了用户体验,避免了用户...

    JSP 基于Ajax的分页列表.rar

    Ajax内容分页 JSP代码实例,JSP 基于Ajax的分页列表,将所获取的新闻列表填充到页面的相应位置,实现上一页、下一页、最末页、首页的分页结构,ajax_func.js为主要实现ajax功能的JS文件,代码截图如图所示。

    基于AJAX的分页类实现代码

    **基于AJAX的分页类实现** 随着网页交互性需求的增强,AJAX(Asynchronous JavaScript and XML)技术被广泛应用,以提供无需刷新整个页面就能更新局部内容的能力。在这个背景下,开发一个基于AJAX的分页类对于提高...

    基于jquery的js+ajax分页控件

    **基于jQuery的JS+Ajax分页控件** 在Web开发中,数据的分页展示是一项基本功能,尤其在处理大量数据时,分页能够提高页面加载速度,优化用户体验。jQuery库提供了一种简单且强大的方式来实现AJAX分页,通过结合...

    ajax分页的java类

    Ajax分页主要通过JavaScript与服务器进行异步通信,获取并更新页面部分内容,而不是重新加载整个页面。在这个场景下,我们讨论的是一个Java类,它可能实现了Ajax分页的功能。下面我们将深入探讨Ajax分页的原理,以及...

    ajax分页,json数据返回

    在网页开发中,"Ajax分页与JSON数据返回"是一个常用的技术组合,它极大地提升了用户体验,使得用户在浏览大量信息时无需等待整个页面刷新。Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的...

    jQueryPager(JQuery分页插件pagination实现Ajax分页)

    **jQueryPager:基于JQuery的Ajax分页插件Pagination实现** 在Web开发中,当数据量庞大时,分页是一种常见的优化用户体验的方式。jQueryPager是一款轻量级的jQuery分页插件,它允许开发者通过Ajax无刷新的方式实现...

    基于 jQuery 实现的 Ajax 异步分页

    为了解决这个问题,我们可以采用基于jQuery的Ajax异步分页技术。本篇文章将详细介绍如何利用jQuery实现Ajax异步分页,以及其背后的原理和实践应用。 首先,让我们理解什么是Ajax。AJAX(Asynchronous JavaScript ...

    thinkphp ajax分页

    二、Ajax分页原理 Ajax(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下更新部分网页内容的技术。在分页场景中,用户点击分页按钮时,前端通过Ajax向服务器发送请求,获取新的分页数据,然后...

    基于ASP的无刷新ajax分页

    **基于ASP的无刷新AJAX分页技术详解** 在网页开发中,分页是一种常见的数据展示方式,尤其在处理大量数据时,它能帮助用户更有效地浏览和管理内容。传统的分页方式通常需要用户每次点击页码时页面整体刷新,这可能...

    纯手工实现AJAX分页(无库)-能被搜索引擎收录的AJAX分页-源代码

    然而,由于搜索引擎爬虫通常不会执行JavaScript代码,因此,传统的基于AJAX的分页可能导致搜索引擎无法正确索引和收录页面。本篇文章将深入探讨如何纯手工实现能被搜索引擎收录的AJAX分页,以及如何利用C#后端支持这...

    struts+ajax分页程序

    在这个“struts+ajax分页程序”中,我们主要探讨如何将Struts与Ajax结合,实现网页的动态分页功能。分页在大型数据集的展示中至关重要,因为它提高了用户体验,避免一次性加载大量数据导致页面响应变慢。 首先,让...

    ajax分页,不基于任何框架和控件

    **Ajax分页技术详解** 在Web开发中,为了提高用户体验,常常需要实现数据的分页显示,而Ajax分页就是一种无需刷新整个页面就能实现数据动态加载的技术。它利用Ajax(Asynchronous JavaScript and XML)异步通信技术...

    .NET Ajax 分页控件

    对于MVC应用,由于其没有内置的UpdatePanel,我们需要通过jQuery或其他JavaScript库,如Ajax.BeginForm或$.ajax方法,结合服务器端的Action来实现AJAX分页。在服务器端,可以使用PagedList库,它为ASP.NET MVC提供了...

    AJAX 分页程序详解

    在"基于ajax的分页"项目中,我们可以看到一个完整的AJAX分页示例。它可能包含以下部分: - HTML结构:包含分页按钮和数据展示区域。 - JavaScript代码:创建XMLHttpRequest对象,处理请求和响应,更新页面。 - CSS...

    Ajax分页功能的无框架实现方法

    一、理解Ajax分页基础 1. **Ajax**:Ajax允许网页在不刷新整个页面的情况下与服务器进行通信,通过JavaScript发送异步请求,获取新数据,并动态更新局部页面内容。 2. **分页原理**:分页通常基于页码,通过向...

Global site tag (gtag.js) - Google Analytics