Ajax如何实现静态页面分页_AJAX教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:解析AJAX进度条
在最近的一个项目中,有一个上传功能:上传一个cvs文件,然后解析此文件并写入数据库 由于经常需要传很大的文件,客户完成此功能往往需要40分钟,在这个过程中,页面也没有任何提示,用户体验非常不好? 为何不用ajax作一个进度条呢? 分两步完成此需求: 一

静态页面分页的AJAX实现,效果如图:

index.html页面源文件:

<html>
<head>
<title>AJAX静态分页</title>
<meta http-equiv="content-type" content="text/html;charset=gb2312">

<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>

<script type="text/javascript">
<!--
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.innerHTML=unescape(xmlhttp.responseText); //将服务器返回的数据解码并写入指定的ID中。
}
else {
content.innerHTML='<span style="color:red">正在从服务器提取数据......</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.innerHTML=str; 将str变量的值写入该对象中。
}

function rightinfo() { //right对象中的原始信息,请在页面开始和被显示条数被修改后调用
document.getElementById('right').innerHTML='<a href="javascript: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').innerHTML=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); //发送请求。
}
}

//-->
</script>
</head>

<body onload="getweblist(1);rightinfo();">
<div id="main">
<div id="title">
<div id="left">静态分页的AJAX实现</div>
<div id="right"></div>
</div>
<div id="content"></div>
<div id="download">
作者:十一狼<br />
联系:275915854(QQ)&nbsp;112183883@163.com(email)<br />
下载:<a href="http://www.w3cg.net/Ajax.rar" target="_blank">http://www.w3cg.net/Ajax.rar</a>
</div>

</div>
</body>

</html>

set.asp文件代码

<!--#include file="conn.asp"-->
<%
Dim pagesize
pagesize=Trim(Request.QueryString("pagesize"))
If pagesize<>"" And IsNumeric(pagesize)=True Then
session("pagesize")=pagesize
'sql="select top 1 * from [pagesize] order by id desc"
'rs.open sql,conn,1,3
'rs("pagesize")=pagesize
'rs.update
'rs.close
Response.Write(escape("<span style=""color:red"">Completed。</span>"))
Else
Response.Write(escape("<span style=""color:red"">Err:参数错误。</span>"))
End If
Set rs=Nothing
conn.Close
Set conn=Nothing
%>

conn.asp文件代码

<%
Dim conn,rs
Set conn=Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data.mdb")
Set rs=Server.CreateObject("ADODB.Recordset")
%>

server.asp文件代码

<!--#include file="conn.asp"-->

<%
'Dim pagesize
'sql="select top 1 * from [pagesize] order by id desc"
'rs.open sql,conn,1,1
'pagesize=rs("pagesize")
'rs.Close
If session("pagesize")="" Then session("pagesize")=9
Dim page
page=unescape(Request.QueryString("page"))
If page<>"" Then
sql="select * from [test] order by id asc"
rs.open sql,conn,1,1
If rs.eof Then
Response.Write(escape("还没有任何数据"))
Else
rs.pagesize=session("pagesize")
page=CLng(page)
If page<1 Then
page=1
ElseIf page>rs.pagecount Then
page=rs.pagecount
End If
rs.absolutepage=page
Dim i,str
str=str & "<div style='margin:0'>"
For i=1 To rs.pagesize
str=str & rs("id") & ". <a href='" & rs("weburl") & "' title='前往该网站' target='_blank'>" & rs("webname") & "</a><br />"
rs.movenext
If rs.eof Then Exit For
Next
str=str & "</div><div style='margin-top:10px;line-height:30px;text-align:left;border-top:1px #999 solid'>"
str=str & "<a href='javascript:void(getweblist(1))'><<</a> "
For i=1 To rs.pagecount
If i=page Then
str=str & "<span style='font-weight:bold;color:red;font-size:16px;'>" & i & "</span> "
Else
str=str & "<a href=javascript:void(getweblist(" & i & "))>" & i & "</a> "
End If
Next
str=str & " <a href='javascript:void(getweblist(" & rs.pagecount & "))'>>></a>"
str=str & "</div>"
str=escape(str)
Response.Write(str)
End If
rs.Close
Set rs=Nothing
conn.Close
Set conn=Nothing
Else
Response.Write(escape("Error:页数不能为空!"))
End If
%>

data数据库设置

表:pagesize 字段:id 自动编号 pagesize 数字

test 字段:id 自动编号 webname 文本 weburl 文本 addtime 日期/时间

 

分享:解读jsp+ajax自动刷新实例
一、JSP文件:auto.jsp %@ page contentType=text/html; charset=gb2312 % % //设置输出信息的格式及字符集 response.setContentType(text/xml; charset=UTF-8); response.setHeader(Cache-Control,no-cache); out.println(response); for(int i=0

来源:模板无忧//所属分类:AJAX教程/更新时间:2010-02-27
相关AJAX教程