Ajax读取数据之分页显示篇实现代码(2)


<!--#include file="Conn.Asp"-->
<%
'出自:
'作者:康董
'如需转载请务必保留以上信息
'定义一个变量,来保存xml数据
xml="<?xml version='1.0' encoding='gb2312'?><body>"
action=Request.QueryString("action") '使用get方式接受一个action来判断客户端想要执行什么操作
Select case action
case "read" '如果为read则执行读取数据的操作
Call Read
case else
xml = xml&"<msg>请求参数错误,请不要试图非法操作!</msg>"
End Select
xml=xml&"</body>"
Response.Clear
Response.ContentType="text/xml"
Response.CharSet="gb2312"
Response.write xml
Response.End

Sub Read '自定义的读取数据过程
Call OpenConn '打开数据库链接
Current_Page = Request("Current_Page") '当前的页码
PageCount = request("PageCount") '当前页显示的条数
xml = xml&"<page>"&pagecount&"</page>"
If Current_Page = "" Or Not IsNumEric(Current_Page) Then
Current_Page = 1
End If
If PageCount = "" Or Not IsNumEric(PageCount) Then '判断条数输入是否正确
PageCount = 5
End If
Sql = "Select count(*) From page_table" '读取page_table表中共有多少条数据
Set Rs = Conn.Execute(Sql) '执行sql语句
xml = xml&"<allrecord>"&Rs(0)&"</allrecord>"
If Current_Page = 1 Then '如果是第1页
Sql = "Select Top "&PageCount&" * From page_table order by id desc"
Else
Sql = "Select Top "&PageCount&" * From page_table where id<(Select Min(id) From (Select Top "&((Current_Page-1)*PageCount)&" id From page_table order by id desc)) order by id desc"
End If
Set Rs=Conn.Execute(Sql)
While Not Rs.Eof
xml = xml&"<list>"
xml = xml&"<id>"&Rs("id")&"</id>"
xml = xml&"<content>"&Rs("content")&"</content>"
xml = xml&"</list>"
Rs.MoveNext '下一条
Wend
End Sub
%>


上面是本次ajax分页教程实例中请求的服务端网页源码.我在服务端使用的是Asp技术,当然你也可以使用jsp,php,.net等轻松模拟.关于在服务端输出xml数据.在前几篇的ajax教程里我都有讲解.所以我们从该源码中的Read读取过程开始讲起:

1、Current_Page = Request("Current_Page") :接收客户端ajax使用url参数传递过来的Current_page,请求的页码
2、PageCount = Request("PageCount") :接收客端ajax使用url参数传递过来的PageCount,每页显示的条数
3、然后分别判断Current_Page是否为空.或者是否为数字.如果不符合条件.则将Current_page等于1.如果PageCount也为空,或者不是数字,则将PageCount等于5,也就是每页读取5条数据
4、Sql = "Select count(*) From page_table"这条sql的作用是读取表内一共有多少条数据,也就是我们在前端代码所说的总条数.将这个总条数读取以后并保存在一个allrecord的元素里.然后传回给客户端.客户端每次读取数据都会获取这个数字.以该数字为依据,进行页码的创建.
5、If Current_Page = 1 Then 判断Cruuent_Page是否为1,如果为1则执行:Sql = "Select Top "&PageCount&" * From page_table order by id desc" 该sql语句的意思很简单,只读取表内的"PageCount"条数据.如果你在前端没有设置要读取的条数.那么 PageCount等于5,也就是只读取5条数据.读取顺序为desc,倒序读取!
6、Else如果Crrent_Page不等于1,只有在你点击了页码列表中非第1页时,Current_Page才不会是1,那么就执行:Sql = "Select Top "&PageCount&" * From page_table where id<(Select Min(id) From (Select Top "&((Current_Page-1)*PageCount)&" id From page_table order by id desc)) order by id desc",这条sql语句是分页的核心.他的大致意思是说:在表中读取PageCount条数据.这些数据的id必须小于已经显示出来的数据中id最小的那条数据.比如你点击的是第3页,每页显示的条数为5条.那么这第三页中要显示的数据的id,必须要小于第二页id最小的那条数据,因为是倒序读取.你明白了吗?如果你根本无法理解该Sql的意思.请恶补Sql的相关知识.下面的代码是从数据库里读取数据,我在前几篇都有过详细的讲解.ajax分页至此完毕!
提示:<!--#include file="Conn.Asp"-->Conn.asp是我的数据库链接文件.没什么特别.你应该可以自己写一个出来.网上也有很多现成的代码.本次读取的数据库表名为:page_table 字段分别为ID(自动编号),content(数据内容)
今天就讲到这里,有什么不明白地方.请加 ajax技术交流群:110167482

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wfwswj.html