l 一个实例
在开始正式讲解 Ajax之前,首先让我们先来看看Google Map使用Ajax改善其产品设计的效果。
1. 在浏览器地址栏中输入http://maps.google.com打开Google Map的界面。
2. 在页面顶端的搜索框中输入“China”,单击“Search”按钮。
3. 单击地图右上角的“Satellite”按钮,切换到卫星界面。
4. 调整地图左上角的尺寸,方法或者缩小当前区域。可以看到,地图区域的图象根据标尺的位置快速的变换。
5. 按住鼠标左键,拖拽地图,地图区域的图象随着鼠标的移动而移动这个过程的图象是实时更新的。效果如下图所。
由上可以明显的看出,当用户拖动地图进行操作的时候,Web页上的地图立即发生相应的变化,页面却没有刷新,当按住鼠标左键移动地图的时候,地图跟着移动,这个过程是快速的,而期间用户没有想服务器提交表单或和单击一个超链接。如果用传统的Web应用程序交互思维来理解,这个过程是难以理解的,这正是Ajax的魅力。
l什么是Ajax?
在研究ajax之前首先让我们先来讨论一个问题 ——什么是Web 2.0 。听到 Web 2.0 这个词的时候,应该首先问一问 “Web 1.0 是什么?” 虽然很少听人提到 Web 1.0,实际上它指的就是具有完全不同的请求和响应模型的传统 Web。比如,到 hdu.edu.cn 网站上点击一个按钮。就会对服务器发送一个请求,然后响应再返回到浏览器。该请求不仅仅是新内容和项目列表,而是另一个完整的 HTML 页面。因此当 Web 浏览器用新的 HTML 页面重绘时,可能会看到闪烁或抖动。事实上,通过看到的每个新页面可以清晰地看到请求和响应。
Web 2.0(在很大程度上)消除了这种看得见的往复交互。比如在 Google Maps 上,你可以拖动地图,放大和缩小,只有很少的重绘操作。当然这里仍然有请求和响应,只不过都藏到了幕后。作为用户,体验更加舒适,感觉很像桌面应用程序。这种新的感受和范型就是当有人提到 Web 2.0 时您所体会到的。
需要关心的是如何使这些新的交互成为可能。显然,仍然需要发出请求和接收响应,但正是针对每次请求/响应交互的 HTML 重绘造成了缓慢、笨拙的 Web 交互的感受。因此很清楚,我们需要一种方法使发送的请求和接收的响应只 包含需要的数据而不是整个 HTML 页面。惟一需要获得整个新 HTML 页面的时候就是希望用户看到 新页面的时候。
但多数交互都是在已有页面上增加细节、修改主体文本或者覆盖原有数据。这些情况下,Ajax 和 Web 2.0 方法允许在不 更新整个 HTML 页面的情况下发送和接收数据。对于那些经常上网的人,这种能力可以让您的应用程序感觉更快、响应更及时,让他们不时地光顾您的网站。
因此在这里,我们是时候可以对ajax做出一个完整的解释了,Adaptive Path公司的Jesse James Garrett这样定义Ajax:
Ajax不是一种技术。实际上,它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含:
基于XHTML和CSS标准的表示;
使用Document Object Model进行动态显示和交互;
使用XMLHttpRequest与服务器进行异步通信;
使用JavaScript绑定一切。
这非常好,但为什么要以Ajax命名呢?其实术语Ajax是由Jesse James Garrett创造的,他说它是“Asynchronous JavaScript + XML的简写”。
l Ajax工作原理
通过上述的定义,我们应该已经知道Ajax的组成了,即他是由XHTML,XML,CSS,DOM,XMLHttpRequest,JavaScript等技术综合而成的,然而,真正使用Ajax能实现异步通信,要真正实现这种绚丽的奇迹,必须非常熟悉一个JavaScript 对象,即 XMLHttpRequest。因此我们要了解Ajax的工作原理,就要从理解XMLHttpRequest这个对象开始。
下面给出将要用于该对象的很少的几个 方法和属性。
·open():建立到服务器的新请求。
·send():向服务器发送请求。
·abort():退出当前请求。
·readyState:提供当前 HTML 的就绪状态。
·responseText:服务器返回的请求响应文本。
‘onreadystatechange:回调方法
·responseXML:服务器返回的请求响应XML形式组织的文本。
下面我们简单的介绍一下这几个方法的作用。
l 创建一个XMLHttpRequest
首先需要创建一个新变量并赋给它一个 XMLHttpRequest 对象实例。这在 JavaScript 中很简单,只要对该对象名使用 new 关键字即可,如下代码所示。
<script language="javascript" type="text/javascript">
var request = new XMLHttpRequest();
</script>
在 JavaScript 中用 var 创建一个变量,给它一个名字(如 “request”),然后赋给它一个新的 XMLHttpRequest 实例。此后就可以在函数中使用该对象了。
错误处理
在实际上各种事情都可能出错,而上面的代码没有提供任何错误处理。较好的办法是创建该对象,并在出现问题时优雅地退出。比如,任何较早的浏览器都不支持 XMLHttpRequest,您需要让这些用户知道有些地方出了问题。下面js代码通过创建getXMLHttpRequest()方法说明如何创建该对象。
代码1:一个详细的XMLHttpRequest对象的创建
<script language="javascript" type="text/javascript">
function getXMLHttpRequest(){
var request = false;
try {
request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
request = false;
}
}
}
return request;
}
</script>
一定要理解这些步骤:
创建一个新变量 request 并赋值 false。后面将使用 false 作为判定条件,它表示还没有创建 XMLHttpRequest 对象。
·增加 try/catch 块:
·尝试创建 XMLHttpRequest 对象。
1、如果失败(catch (failed))则保证 request 的值仍然为 false。
2、检查 request 是否仍为 false(如果一切正常就不会是 false)。
·如果出现问题则request 返回 false。
此外,在上面的代码中,我们是不是注意到了一个问题,就是当request = new XMLHttpRequest();出现异常的时候,在catch语句中我们用了request = new ActiveXObject("Msxml2.XMLHTTP");和request = new ActiveXObject("Microsoft.XMLHTTP");等语句进行对象获取,这是针对IE浏览器而进行的操作,因为IE浏览器对 XMLHttpRequest 版本有不同的称呼。事实上,它将其称为几种 不同的东西。如果使用较新版本的 Internet Explorer,则需要使用对象 Msxml2.XMLHTTP,而较老版本的 Internet Explorer 则使用 Microsoft.XMLHTTP。我们需要支持这两种对象类型(同时还要支持非 Microsoft 浏览器)。
l 用 XMLHttpRequest 发送请求
得到请求对象之后就可以进入请求/响应循环了。记住,XMLHttpRequest 惟一的目的是让您发送请求和接收响应。其他一切都是 JavaScript、CSS 或页面中其他代码的工作:改变用户界面、切换图像、解释服务器返回的数据。准备好 XMLHttpRequest 之后,就可以向服务器发送请求了。
Ajax 采用一种沙箱安全模型。因此,Ajax 代码(具体来说就是 XMLHttpRequest 对象)只能对所在的同一个域发送请求。如果让 Ajax 代码在www.hdu.edu.cn 上运行,则必须 www.hdu.edu.cn 中运行的脚本发送请求。
设置服务器 URL
首先要确定连接的服务器的 URL。这并不是 Ajax 的特殊要求,但仍然是建立连接所必需的。多数应用程序中都会结合一些静态数据和用户处理的表单中的数据来构造该 URL。比如,下列 JavaScript 代码获取电话号码字段的值并用其构造 URL。
代码2: 建立请求 URL
<script language="javascript" type="text/javascript">
function getCustomerInfo() {
var phone = document.getElementById("phone").value;
var url = "/cgi-local/lookupCustomer.jsp?phone=" + escape(phone);
}
</script>
首先,代码创建了一个新变量 phone,并把 ID 为 “phone” 的表单字段的值赋给它。下列代码展示了这个表单的 XHTML,其中可以看到 phone 字段及其 id 属性。
代码3: Break Neck Pizza 表单
<body>
<form action="POST">
<p>Enter your phone number:
<input type="text" size="14" name="phone" id="phone" onChange="getCustomerInfo();" />
</p>
<p>Your order will be delivered to:</p>
<div id="address"></div>
<p>Type your order in here:</p>
<p><textarea name="order" rows="6" cols="50" id="order"></textarea></p>
<p><input type="submit" value="Order Pizza" id="submit" /></p>
</form>
</body>
分享到:
相关推荐
ajax详解ajax详解ajax详解 ajax详解ajax详解ajax详解 ajax详解ajax详解ajax详解 ajax详解ajax详解ajax详解
### Ajax详解知识点归纳 #### 一、Ajax概述 **1.1 什么是Ajax** - **定义**: Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)并非一项全新的技术,而是一种利用现有技术的新方法,旨在改善用户...
资源名称:Ajax详解内容简介:《Ajax 详解》电子书 chm格式,是《四天学会Ajax》一书扩展,更加详细的讲述Ajax的方方面面。 内容简要给大家说明一下:Ajax简介、使用Javascript和Ajax发出异步请求、Ajax中的...
1. **创建XMLHttpRequest对象**:这是AJAX通信的核心,所有AJAX请求都是通过这个对象发送的。 2. **初始化请求**:设置请求的URL、HTTP方法(GET或POST)、是否异步等参数。 3. **打开连接**:调用`open()`方法...
《Ajax 详解》电子书 chm 《Ajax 详解》电子书 chm格式,是《四天学会Ajax》一书扩展,更加详细的讲述Ajax的方方面面。 内容简要给大家说明一下:Ajax简介、使用JavaScript和Ajax发出异步请求、Ajax中的高级请求...
1. **AJAX详解.chm**:这应该是主要的学习资料,包含详细的AJAX技术讲解,涵盖基础概念、实现方法、最佳实践等内容。 2. **webgamei说明文档.txt**:可能是关于使用AJAX开发Web游戏的指南,可能涉及到如何利用AJAX...
Ajax 详解教程讲述 Ajax 原理 Ajax 是一种异步 JavaScript 和 XML 技术,允许 Web 应用程序实时更新页面内容,而不需要重新加载整个页面。Ajax 技术的核心是使用 XMLHttpRequest 对象异步地从服务器获取数据,并...
ajax教程,详细说明了XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。 来自MSDN...
第 1 部分:Ajax 简介 第 2 部分:: 使用 JavaScript 和 Ajax 发出异步请求 第 3 部分: Ajax 中的高级请求和响应 第 4 部分: 利用 DOM 进行 Web 响应 第 5 部分: 操纵 DOM 第 6 部分: 建立基于 DOM 的 Web 应用程序 第...
"Ajax详解"这个主题涵盖了从基础到高级的Ajax应用,旨在帮助读者深入理解并熟练掌握这一技术。 源代码是学习任何编程技术的重要组成部分,"Ajax详解"中的源代码提供了一个实践和探索Ajax实际操作的平台。通过分析和...
并应用上述知识开发了8个基于AJAX的Web应用系统,如基于AJAX的文件和图像处理、AJAX祝福墙、AJAX留言簿、AJAX聊天室、AJAX RSS阅读器、AJAX相册、基于AJAX的电子邮件处理等。最后以两个大型的AJAX Web应用系统(基于...
- 《Ajax开发详解.pdf》:这份文档可能详细介绍了Ajax的各种细节和最佳实践。 - "下载必看.htm":可能是关于Ajax开发的一些提示或注意事项。 - "飞娥软件Feiesoft.com.url":可能指向一个提供Ajax开发工具或教程...
达内培训集团的CTO写的 ajax详解 适合入门学习的
**Ajax详解与实战** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下,能够更新部分网页的技术。它通过JavaScript在后台与服务器进行少量数据交换,使得网页实现异步更新,极大地提升了...
**Ajax实战:实例详解源代码** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,大大提升了...
**Ajax经典入门详解** Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它使得网页可以在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。Ajax的核心是利用JavaScript和...
**Ajax 概述** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。这项技术的出现极大地提升了Web应用程序的用户体验,因为它允许后台与服务器进行数据交换,而...
而AJAX的参数详解涉及到了在使用AJAX进行数据交互时各个参数的意义及使用方法,以及如何处理返回状态和状态函数来获取数据。 首先,来看看url参数,这是AJAX请求中的必填项,它指定了请求发送的目标地址。url可以是...