存档

文章标签 ‘PHP从入门到精通’

意外的惊喜

2010年4月30日

今天下午,在斑马线等待一位朋友时,突然看到一TX手里面拿着一本书,感觉好眼熟,于是问了一下该同学,兄弟,请问你拿的是什么书?那兄弟也挺配合的, 就直接把手里面的书给我看,我一看,难怪那么眼熟,原来这就是我写的那本书!

我看那书后好像贴着标签,有点像是借的,我就问那兄弟,你这本书是买的还是借的?该同学回答,这是借的。那你是从哪里借的呢?是从我们学校图书馆借的。你们学校是…?成都理工大学。哦,原来这样,好,没事,多谢兄弟!

正好我的朋友也从对面走了,我也该走了。

真是没有想到居然在这个时候看到有人拿着我的书,并且还是从学校图书馆借的,难得!真没有想到我的书居然进了成都理工大学的馆藏!

多谢你们!

今天是我的喜庆日子,还真没有想到我自己居然发现这样的喜庆!

PHP从入门到精通, PHP教程

《PHP从入门到精通》样章-14章

2009年9月8日

第14章 PHP与AJAX

AJAX技术是近年流行起来的技术。它是现有的多种技术的综合应用,包括JavaScript技术、XML技术、DOM技术和XMLHttpRequest控件等多种技术。AJAX技术是现在流行的Web2.0的一个重要标志。本章将对以下内容讲解:

  • AJAX原理。

  • AJAX的核心技术。

  • AJAX的相关应用。

通过对本章的学习,读者将能够理解什么是AJAX,其工作原理是什么,并且能够在实际的应用中使用AJAX

14.1 AJAX概述

AJAX技术是当前Web技术中一门炙手可热的新兴技术。实质上,它并非一门新技术,而是几种新技术的强大组合。它能够为用户提供更为自然的浏览体验。这一节将对AJAX进行详细地介绍。

14.1.1 什么是AJAX

传统B/S模式的应用程序的弊端是对用户反应不灵敏,用户总是处于“提交=>等待=>响应”的过程中,也就是说“用户的动作总是在和服务器思考时间同步”。而AJAX提供了与服务器异步通信的能力,从根本上让用户从“请求=>等待=>响应”的循环中解脱出来。

AJAXAsynchronous JavaScript and XML(以及DHTML等)的缩写,翻译成中文为异步JavaScriptXML。这个短语是Adaptive PathJesse James Garrett发明的,按照Jesse的解释,这不是个首字母缩写词,AJAX技术包含:

  • 基于CSS标准的表示。

  • 使用Document Object Model进行动态显示和交互。

  • 使用XMLHttpRequest与服务器进行异步通信。

  • 使用JavaScript绑定一切。

AJAX是现有多种技术的综合应用。它是通过浏览器页面与服务器后台处理的异步处理来减少网络传输,进而减少用户的等待时间和服务器负担的一种综合技术。它由HTMLJavaScript技术、DHTMLDOM组成,这一方法可以将传统笨拙的Web界面转化成交互性的AJAX应用程序。

14.1.2 工作原理

AJAX的核心是XMLHttpRequestXMLHttpRequest提供了与服务器异步通信的能力,从而让用户在请求的时候不受到阻塞。其工作流程如下所述。

首先由用户在客户端浏览器页面触发某个事件,如onclick事件,当然,这个事件只能是被JavaScript脚本语言捕获到的事件。然后JavaScript脚本相应的创建一个XMLHttpRequest请求,并通过XMLHttpRequest异步的把请求发送到服务器端,同时等待服务器端的响应。服务器端程序在接受客户端所提交的请求后,进行处理并把结果返回。返回的结果被XMLHttpRequest捕获到并返回给JavaScript,再由JavaScript调用相应的DOM进行显示层的控制。如图14-1所示。

14-1 AJAX工作原理图

要让AJAX能够成功运行,需要用户的客户端与服务端两种技术互相配合。客户端采用JavaScript引擎向服务器端发送请求,服务端根据客户端提交的请求返回指定内容。

用户客户端的XMLHttpRequest对象使JavaScript以异步方式访问服务器成为可能。这样当JavaScript函数在后台向服务器提交请求时,用户可以在客户端页面继续其他的工作。

14.1.3 优点与缺点

AJAX技术作为近年来流行的技术,有其技术优点,也有其缺点。优点主要有以下几个方面。

  • AJAX可以提高系统性能,优化用户界面,增强用户浏览体验。

  • AJAX允许在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户的动作,并避免了在网络上发送那些没有改变过的信息。

  • AJAX应用可以仅向服务器发送并取回必需的数据,服务器与客户端之间交换的数据大大减少。

  • AJAX不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

  • AJAX允许将一些服务端的操作移至客户端,减轻了服务器的负担。

其缺点主要有以下几个方面。

  • AJAX可以在不刷新页面的情况下更新页面数据,这可能破坏浏览器【后退】按钮的正常行为。

  • AJAX在客户端执行,因此在开发时需考虑到AJAX的兼容性。

  • AJAX对串流媒体的支持没有FLASHJava Applet好。

  • 由于AJAX的代码存放在页面的HTML语言中,因此项目代码可能因此泄漏。

  • 使用AJAX动态更新页面使得用户难于将某个特定的状态保存到收藏夹中。

  • AJAX的无刷新重载使得页面的变化没有刷新重载整个页面那么明显,所以容易给用户带来困扰。

  • JavaScriptAJAX引擎,不得不考虑JavaScript的兼容性和DeBug等问题。

  • 现有的好多手持设备(例如PDA、手机等)不能很好地支持AJAX

14.2 使用AJAX

AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。它由用户的客户端通过JavaScriptXMLHttpRequest对象向服务器发起请求。再由服务器端根据用户的请求进行处理,完成以后向客户端抛出处理结果,用户浏览器再将服务器处理结果,通过DOM结构呈现在HTML页面上。本节将根据AJAX的请求过程一步步进行讲解。

14.2.1 创建XMLHttpRequest对象

AJAX是通过XMLHttpRequest对象向服务器发起请求的。该对象最初是由MicrosoftInternet ExplorerActiveX对象引入,被称为XMLHTTP。而后Mozilla﹑Netscape﹑Safari和其他浏览器也提供了XMLHttpRequest类,只不过它们创建XMLHttpRequest类的方法不同。

对于MicrosoftInterner Explorer浏览器,其版本不同,创建XMLHttpRequest对象的方法也不一样。通常有以下几种方式。

xmlhttp_request = new ActiveXObject(“Msxml2.XMLHTTP.3.0″); //IE3.0IE4.05.0

xmlhttp_request = new ActiveXObject(“Msxml2.XMLHTTP”); //IE6.0

xmlhttp_request = new ActiveXObject(“Microsoft.XMLHTTP”); //IE7.0及以上

其中,上述第一行是在IE6.0之前的版本创建该对象时所使用的方式。第二行为IE6.0版本创建该对象时所使用的方法。第三行为IE6.0版本以上的浏览器创建对象时所使用方法。为了能够更好的兼容不同版本的Internet Explorer浏览器,在实际应用中常常需要根据浏览器版本创建XMLHttpRequest类。

对于MozillaNetscape﹑Safari等浏览器,创建XMLHttpRequest类的方法如下所示。

xmlhttp_request = new XMLHttpRequest();

如果服务器的响应没有XML mime-type header,某些版本的Mozilla浏览器可能无法正常工作。为了解决这个问题,如果服务器响应的header不是text/xml,可以调用如下所示的其他方法修改该header

xmlhttp_request = new XMLHttpRequest();

xmlhttp_request.overrideMimeType(‘text/xml’);

在实际的应用中,AJAX编写在静态的HTML页面中的Script标签以内,也可以编写在独立的JavaScript文件中,在需要使用AJAX的页面加载该JavaScript文件即可。

第14章样章文档下载

PHP从入门到精通, PHP教程 ,