当前位置:文档之家› 基于PHP_MySql_Ajax的分页技术方案

基于PHP_MySql_Ajax的分页技术方案

一、引言

Ajax的全称是AsynchronousJavaScriptAndXML(异步JavaScript和XML),它不是一项新技术,而是很多成熟的技术的集合。

和Applet,Flash相比,Ajax则是一种轻量级的解决方案。因为它操作的基础是HTML或者是XHTML,使用的脚本语言是JavaScript,这可以保证它的纯文本性质;利用XML,Ajax可以和其他应用程序方便的进行通信。Ajax可以迅速赢得别人的关注的另外一个重要原因还在于它完全是基于成熟的技术,作为异步调用的基础设施XMLHttpRequest,早在1999年就被引入了IE浏览器,随后又被其他浏览器支持。

二、传统Web模式与Ajax模式的差异

比起Ajax中异步的概念,在传统Web模式中是一种同步烦人概念:用户必须等待每个请求,当一个请求后才能获得结果,在试用完这些结果后才会发出新的请求。而在基于Ajax的Web程序中,最为重要的特征就是将同步请求转变为异步请求。这意味着客户端和服务器端不必再相互等待,而是可以进行一些并发的操作。用户在发送请求以后可以继续当前的工作,包括浏览或提交信息。

三、传统分页方式与Ajax方式分页的差异

对Ajax有了初步的了解后,接着要介绍基于PHP、MySql和Ajax的分页技术。传统分页实现的方式是:客户端通过URL查询字符串将要显示的页数以及其他查询条件提交到服务器端,服务器端会根据查询条件向数据库查询想要显示的数据,最后将数据返回到视图层进行显示。而基于Ajax进行分页显示实现的方式是:首先创建一个异步传输对象,该对象创建完成后,可以使用该对象的open方法创建一个请求,该方法所需的具体参数如下:

Method:指定请求的类型,一般为get或者post;

url:指定请求的地址,可以是绝对地址或相对地址,可以附带查询字符串;

asynchronous:可选参数,表示请求是同步还是异步,异步请求为true,同步请求为false,默认为true。在创建完请求后可以使用send方法向服务器发送这个请求。最后通过使用on-readystatechange绑定请求成功后处理数据的方法。

四、编程实现

由于代码实现篇幅较长,这里只给出核心方法的实现

page.php

<?php

classPage

private¥pagesize=2;

functiongetPageList(¥pageNum){…}//得到要显示的数据

functiongetTotalPages(){…}//得到总页数

//得到分页导航条

functiongetPageBar(¥currentPage)

$start_page=1;

$pageLength=8;

$totalpages=¥this->getTotalPages();

$pageBar="";

return¥pageBar;

?>

该类用来进行数据库查询操作和生成分页导航条。该类既适用于Ajax分页,也适用于传统分页。

ajax.js

varxmlHttp=newcreateXmlHttpRequestObject();

//创建异步传输对象

functioncreateXmlHttpRequestObject()

varxmlHttp;

returnxmlHttp;

functionprocess(pageNum)

if(xmlHttp)

try

xmlHttp.open("GET","creatXml.php?pageNum="+pageNum,true);

xmlHttp.onreadystatechange=doRequest;

xmlHttp.send(null);

catch(e)

alert("Can'tconnecttoserver:\n"+e.toString());

functiondoRequest()

if(xmlHttp.readyState==4)

if(xmlHttp.status==200)

try

getResponseXml();

catch(e)

alert("Errorreadingtheresponse:"+e.toString());

基于PHP+MySql+Ajax的分页技术方案

天津工业大学苏厚雄王琬茹

[摘要]Ajax是指通过JavaScript发出异步HTTP请求,在不重载页面的情况下从服务器获取信息。本文利用Ajax结

合PHP与MySql数据库解决分页技术问题。该方案实现的总体思路是通过用户点击分页导航条上的超链接来调用

JS函数,向服务器端发送异步的HTTP请求来获取需要的数据,并在服务器端将数据以XML格式返回到客户端,在

客户端用DOM进行数据的解析并呈现。

[关键词]AjaxPHP分页技术

213

——

知识,学会操作技能。只有学校重视了,教师的队伍强大了,教学效果自然就提高了。

三、结束语

计算机基础教育的普及和深化是21世纪教学体制改革的一项重要成果,它既是文化基础教育、人才素质教育,又是技术基础教育,是各学科发展的必然和需要,也是社会发展的需要。高校非计算机专业计算机基础教学是培养学生掌握任何一门学科的重要工具和手段,同时对学生的基本素质和思维方式的培养起着重要的作用。我们要转变观念,进一步提高对计算机基础教学工作在我校人才培养计划中的重要性的认识,进一步深化改革进程,为西部地区培养更多更好的应用型人才奠定良好的基础。

参考文献[1]李建.《计算机公共基础教学》的困惑与对策.福建电脑,2006

[2]尹志军.关于高校计算机教育改革的思考.教育理论与实践,2006

[3]关心.关于高等学校计算机基础教学存在问题的探讨.黑龙江教育,2006

[4]匡松.主编

《VisualFoxPro数据库技术及应用》.人民邮电出版社,2007

(上接第212页)利用该路由触发标签绑定,否则VPN路由

可以传递,流量却无法疏通。解决的办法是将不同AS的IGP进行有条件的融合(ConditionalMerging),通过将本AS域内PE的地址泄漏(IGPLeaking)给相邻的AS实现上述要求。另一方面的问题是,取消RR下一跳的计算。为了减少AS内MP-IBGP的连接数,提高扩展性,通常采用RR。RR对IBGP连接不改变其下一跳,而对EBGP连接将把下一跳改为自身,这将导致VPN流量直接穿过RR。解决的办法是通过在EBGP连接上增设路由图(RouteMap),人为地改变RR下一跳计算结果。所以,服务商通常不采用此方案,而是采用MP-EBGP这种折中的解决方案。

4结束语随着企业信息化进程的加快,在未来几年,会有越来越多的用户要求跨市、跨省甚至跨国的通信。在这种趋势下,必须研发出更成熟的路由器软件支持Multi-hopMP-EBGP组网技术,以避免服务商网络的扩展性成为实现企业跨域通信的瓶颈。参考文献[1][美]EricOsborne,AjaySimha.基于MPLS的流量工程[M].张辉,卢炜.北京:人民邮电出版社,2003.18

[2]王达等.虚拟专用网(VPN)精解[M].北京:清华大学出版社,2004.58 ̄59

[3]张志安.VPN实现的研究[J].常州工学院学报,2005,(6):35

(上接第211页)间的社会等级差距,形成新的“数字鸿沟”。因此,技术措施不合理的滥用,将会打破原有合理使用制度所确立的权利人与使用者之间旧的平衡,使公众的权益受到侵害。

参考文献[1]http://www.iprcommission.org/papers/word/Multi-Lin-gual_Documents/Multi_Lingual_Main_Report/DFID_Main_Re-port_Chinese_RR.doc.

[2]冉从敬,黄海瑛.

《著作权合理使用制度的挑战与重构规则初探》

[J].《知识产权》,2003年第6期,第45页.[3]徐冬根等.《网络时代著作权合理使用之思考》[J].《华东政法学院学报》,2003年第4期第22页.

[4]张东操等.

《专家评说六作家告网站案》[N].《中国青年报》,1999年11月2日.

[5]赵伟.

《网络环境下的知识产权问题》[J].《情报科学》,1998年第5期,第21页.

[6]张玉瑞.《互联网上的知识产权:诉讼与法律》[M].人民法院出版社,2000年版,第37页.

[7]乔生.

《信息网络传播权研究》[M].法律出版社,2004年版,第139页.(上接第210页)}}

functiongetResponseXml(){…}//解析从服务器端返回的数据,包括显示的内容和分页导航条

functiondelRow(){…}//删除行

该页用来处理Ajax请求和和数据的显示。creatXml.php<?php

include_once("page.php");

$pageNum=$_GET['pageNum'];$pageList=newPage();

$totalPage=$pageList->getTotalPages();$result=$pageList->getPageList($pageNum);$arr_field_name=array();

for($i=0;$i<mysql_num_fields($result);$i++){

$arr_field_name[$i]=mysql_field_name($result,$i);}

header("Content-Type:text/xml");echo"<?xmlversion='1.0'?>";

echo"<contentcurrentPage='$pageNum'totalPage='$total-Page'>";

while($row=mysql_fetch_array($result)){

echo"<object>";for($i=0;$i<count($arr_field_name);$i++){

echo"<$arr_field_name[$i]>¥row[¥i]</¥arr_field_name[$i]>";}

echo"</object>";}

echo"<pageBar>".$pageList->getPageBar($pageNum)."</pageBar>";

echo"</content>";?>

该页用来生成要显示数据的XML。运行结果如下图所示:

五、结束语

随着Web2.0时代的到来,用户的体验要求越来越高,由于Ajax的出现,正好迎合了用户对浏览速度的需求。因此,Ajax的应用将成为B/S架构项目不可或缺的技术。

参考文献[1][罗]CristianDarie.FilipCherechesTosa.BogdanBrinzarea[2]Ajax与PHPWeb开发.北京:人民邮电出版社,2007.4

214——

相关主题
文本预览
相关文档 最新文档