asp ajax分页,ASP ajax分页教程一

为什么我写ASP分页教程要提到AJAX呢,因为我们要多练习一下编程过程中,结构化的重要性.

再加上很多朋友对分页感到很高深,所以一直都不敢去碰他,要么就用别人写好的组件,要么就是改改别人的东西.特别是.net,我深有感触,假如要快速开发一个项目,我想.net是一个非常优秀的平台.但是,因为他的严重控件化,反而是新手接触不到编程的思想,完全找不到编程的感觉,仿佛就象在搭积木.有时候还是要练习一下底层一点的东西,这样个人的技术能力才会得到提高.我可不想做只会用.NET的组装工人.

好了,下面给出ASP分页的源代码给大家,都进行了详细的注释,一般都可以看的懂.

因为这个是教程一,所以就从最简单的开始,我直接使用的AbsolutePage来定义当前页面,所以没有用诸如MoveFirst这种比较复杂的游标方式,而且分页也是用的下拉选择框,等下个教程我再写一下进阶分页方法,给出前进十页,后退十页,只显示目前所在的十页分组的方法.

ASP虽然是一个过时的东西,不过因为他可以使用JS来写,所以我感觉要做一个项目DEMO的时候,使用ASP要比.NET或者JAVA更方便,因为他不用安装体积庞大的环境.简简单单配置一下就可以了.真要大规模项目开发的话,我肯定还是会用.NET或JAVA的,因为这样就会涉及到效率问题了.

//定义数据库连接语句

var connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

+Server.MapPath("database/vote.mdb");

//建立一个rs数据库查询

var rs = Server.CreateObject("ADODB.Recordset")

//rs连接方式

rs.ActiveConnection = connstring

//rs查询语句(按照用户提交时间倒序查询)

rs.Source = "select * from users order by usetime DESC"

//定义数据库查询模式

rs.CursorType = 3

rs.CursorLocation = 3

rs.LockType = 1

//定义每页显示数据数量

rs.PageSize = 10

//打开数据库连接

rs.Open()

//定义数据库纪录总数,分页总数,URL路径

var counts,pagecos,thisUrl

counts = rs.RecordCount

pagecos = rs.PageCount

thisUrl = Request.ServerVariables("URL")

//如果游标在表中就执行

if(!rs.EOF || !rs.BOF){

//如果url的page参数不为空就执行

if(Request("page").Count != 0){

//定义默认链接字符串,第一页,尾页,上页,下页

//URL的page值(指定的当前页),当前页,当前每页显示数据数量

var defaltStr,firstpage,lastpage,prepage,nextpage,pages,nowPage,nowSize

defaltStr = '

lastpage = defaltStr+pagecos+'">尾页'

pages = Request("page")

//如果处于第一页

//首页,上一页不为链接

if(pages <= 1){

rs.AbsolutePage = 1;

firstpage = '首页'

prepage = '上一页'

nextpage = defaltStr+'2">下一页'

//如果处于最后一页

//尾页,下一页不为链接

}else if(pages >= pagecos){

rs.AbsolutePage = pagecos;

prepage = defaltStr+(pagecos-1)+'">上一页'

lastpage = '尾页'

nextpage = '下一页'

}else{

rs.AbsolutePage = pages

prepage = defaltStr+(Number(pages)-1)+'">上一页'

nextpage = defaltStr+(Number(pages)+1)+'">下一页'

}

}

nowPage = rs.AbsolutePage

nowSize = rs.PageSize

//如果处于最后一页,并且数据显示数量与每页显示数据数量不相等时

//因为最后一页不可能每次都刚好与每页显示数据数量相等

//所以需要定义一个不相等的方法

if(nowPage >= pagecos && (pagecos*rs.PageSize)%counts != 0){

nowSize = counts%rs.PageSize

}

%>

跳转到第

//分页依靠循环显示

for(var num=1; num<=pagecos; num++){

if(nowPage == num){

%>

}else{

%>

}

}

%>

共 / 页 / 条记录

//内容依靠循环显示

for(var i=1;i<=nowSize;i++){

%>

用户IP:建议:提交时间:

//数据库游标向移向下一条记录

rs.MoveNext();

}

%>

//如果数据库游标不在数据库列中

}else{

Response.Write("没有用户信息!")

}

//关闭数据库连接

rs.Close()

%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Asp+AJAX静态分页 亲测 可用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>Asp+AJAX静态分页</title> <style type="text/css"> <!-- body { text-align:center;font:14px Verdana,sans-serif; } a:link,a:visited { color:#00f;text-decoration:none; } a:hover { color:#f00;text-decoration:underline; } #main { width:450px;background:#f2f2f2;border:1px #999 solid;padding:10px;text-align:left;line-height:150%;margin:0 auto; } #title { width:100%;line-height:30px;border-bottom:1px #999 solid;display:table; } #left { float:left;width:50%;text-align:left;font-size:14px;font-weight:bold; } #right { float:left;width:50%;text-align:right; } #content { width:100%;margin:10px 0;clear:both; } #download { width:100%;margin:10px 0;line-height:150%; } --> </style> [removed] <!-- function createAjax() { //该函数将返回XMLHTTP对象实例 var _xmlhttp; try { _xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); //IE的创建方式 } catch (e) { try { _xmlhttp=new XMLHttpRequest(); //FF等浏览器的创建方式 } catch (e) { _xmlhttp=false; //如果创建失败,将返回false } } return _xmlhttp; //返回xmlhttp对象实例 } function getweblist(page) { //该函数用来获取分页数据 var xmlhttp=createAjax(); //创建变量xmlhttp,并将createAjax()函数创建的对象实例赋于它 if (xmlhttp) { //如果xmlhttp对象创建成功,则执行条件语句中的程序 var content=document.getElementById('content'); //获取页面中id为content的对象 xmlhttp.open('get','server.asp?page='+page+'&n='+Math.random(),true); //打开与服务器的连接,其中get为连接方式,server.asp为要连接的页面,有两个参数,其中第一个参数page为需要返回数据的页数,第二个参数n为一个随机数,这样每次发送的URL都会不一样,相当于都向服务器发出一个新的请求,避免浏览器缓存数据。 xmlhttp.onreadystatechange=function() { //为xmlhttp对象的readyState属性指定事件,改属性值改变时,则会执行其中的程序 if (xmlhttp.readyState==4 && xmlhttp.status==200) { //如果xmlhttp.readyState==4并且xmlhttp.status==200时,执行条件中的程序,其中readyState有五个值,4为请求完成,是客户端向服务器提交的数据成功到达,status有N多值-_-!!,其中200为OK,是指服务器向客户端完成发送数据。 content[removed]=unescape(xmlhttp.responseText); //将服务器返回的数据解码并写入指定的ID中。 } else { content[removed]='<span>正在从服务器提取数据......</span>'; //如果服务器没有完成传送,则向用户提示正在传输。 } } xmlhttp.send(null); //向服务器发送请求,因为是get请求,会直接附在URL后面,所以这里括号中的数据为null,IE中也可以不写,但FF就必须加上null,否则会发送失败。 } } function edit() { //编辑分页显示条数的函数 var str='<form style="margin:0">每页显示 <input type="text" id="pagesize" size="3"> 条 <input type="button" id="savebtn" value="保存" onclick="save()"> <input type="button" id="cancelbtn" value="取消" onclick="rightinfo()"></form>' //定义html字符串 var right=document.getElementById('right'); //获得页面中的right对象。 right[removed]=str; //将str变量的值写入该对象中。 } function rightinfo() { //right对象中的原始信息,请在页面开始和被显示条数被修改后调用 document.getElementById('right')[removed]='<a href="[removed]void(edit())" title="修改每页显示条数">Edit</a>'; } function save() { //保存修改后的显示条数 var pagesize=document.getElementById('pagesize'); //这个就不写了,跟上面的用法一样。 if (pagesize.value==''||/[0-9]+/.test(pagesize.value)==false) { //确定用户输入的新数据是不是一个数字 alert("请正确填写每页显示条数! "); return; } var xmlhttp=createAjax(); //创建对象 if (xmlhttp) { xmlhttp.open('get','set.asp?pagesize='+pagesize.value+'&n='+Math.random(),true) //参上同看 xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById('right')[removed]=unescape(xmlhttp.responseText); //先写入从服务器返回的字符串,如果成功,会写入completed。 getweblist(1); //从新获取新修改后的第一页的数据 setTimeout('rightinfo()',3000); //3秒后将right对象的原始字符串写入。 } else { document.getElementById('pagesize').disabled=true; //将几个FORM表单的元素都设为不可改动 document.getElementById('savebtn').disabled=true; document.getElementById('cancelbtn').disabled=true; } } xmlhttp.send(null); //发送请求。 } } //--> [removed] </head> <body> <div id="main"> <div id="title"> <div id="left">Asp+AJAX静态分页</div> <div id="right"></div> </div> <div id="content"></div> </div> </body> </html>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值