在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制。虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向。在过去的几个月里,一个过去并不被广泛支持的技术已经被越来越多的web冲浪者(web surfers??是指浏览器还是浏览者?)所接受,它给了开发者更多的自由开发先进的web应用程序。这些通过javascript来异步取得xml数据的应用程序,被亲切的称为“Ajax应用程序”(Asynchronous Javascript and XML applications)。在这篇文章中,我将会解释如何通过Ajax来取回一个远程的XML文件并更新一个web page,并且随着这个系列的继续,我将讨论更多的方法,使用ajax技术将你的web应用程序提升到一个新的层次.
这第一步就是创建一个带一些数据的XML文件。我们将这个文件命名为data.xml。它是一个简单的XML文件,而在一个真实的程序中,它会复杂许多,但对于我们的例子来说,简单明了是最合适地。
CODE:
[Copy to clipboard]
<?xml version="1.0" encoding="UTF-8"?> <root> <data> 这是一些示例数据,它被保存在一个XML文件中,并被JavaScript取回。 </data> </root>
现在让我们创建一个简单的web页面包含一些示例数据。这个页面将是我们的js脚本所在,并且这个页面将会让用户们访问柄看到Ajax脚本的运行。我们把它命名为ajax.html
CODE:
[Copy to clipboard]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="zh" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>使用ajax开发web应用程序 - 示例</title>
</head>
<body>
<h1>使用ajax开发web应用程序</h1>
<p>这个页面演示了AJAX技术如何通过动态读取一个远程文件来更新一个网页的内容--不需要任何网页的重新加载。注意:这个例子对于禁止js的用户来说没有效果。</p>
<p id="xmlObj">
这是一些示例数据,它是这个网页的默认数据 <a href="data.xml"
title="查看这个XML数据." onclick="ajaxRead('data.xml'); this.style.display='none'; return false">查看XML数据.</a>
</p>
</body>
</html>
注意,对于那些没有javascript的用户,我们直接链接到data.xml文件。对于那些允许运行javascript的用户,函数“ajaxRead”将被运行,这个链接被隐藏,并不会被转向到那个data.xml文件。函数“ajaxRead”现在还没定义。所以如果你要检验上面的示例代码,你会得到一个javascript错误。让我们继续并定义这个函数(还有其他的),让你能够看到ajax是如何工作的,下面的脚本要放到你的head标签里:
CODE:
[Copy to clipboard]
<script type="text/javascript"><!--
function ajaxRead(file){
var xmlObj = null;
if(window.XMLHttpRequest){
xmlObj = new XMLHttpRequest();
} else if(window.ActiveXObject){
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
} else {
return;
}
xmlObj.onreadystatechange = function(){
if(xmlObj.readyState == 4){
updateObj('xmlObj', xmlObj.responseXML.getElementsByTagName('data')[0].firstChild.data);
}
}
xmlObj.open ('GET', file, true);
xmlObj.send ('');
}
function updateObj(obj, data){
document.getElementById(obj).firstChild.data = data;
}
//--></script>
这堆代码有点多,让我们一点点的进行。第一个函数叫做“ajaxRead”-也就是我们在页面的“查看XML数据”链接中调用的函数,我们定义了一个“xmlObj”变量-这将作为客户端(用户正在查看的这个web页面)以及服务端(web站点本身)之间的中间件。我们在一个if/else块中定义这个对象:
CODE:
[Copy to clipboard]
if(window.XMLHttpRequest){
xmlObj = new XMLHttpRequest();
} else if(window.ActiveXObject){
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
} else {
return;
}
这只是一个对不同对象是否可用的测试-某些浏览器实现了不同的XMLHttpRequest对象,所以当我们定义“xmlObj”作为我们的XMLHttpRequest对象时,我们不得不根据浏览器所实现的来定义它。如果没有可用的XMLHttpRequest对象,我们将执行“return”语句结束这个函数以避免脚本错误。在大部分情况下,这个检验将返回一个XMLHttpRequest对象-这部分代码应该能够在绝大部分的浏览器上工作,除了少部分比较老的浏览器的异常情况(它能够工作在ie5.01上,但是在netscape4上会使函数终止)。
接下来是这些代码块:
CODE:
[Copy to clipboard]
xmlObj.onreadystatechange = function(){
if(xmlObj.readyState == 4){
updateObj('xmlObj', xmlObj.responseXML.getElementsByTagName('data')[0].firstChild.data);
}
}
每次XMLHttpRequest的状态发生变化,事件“onreadystatechange”就会被触发。通过使用“xmlObj.onreadystatechange = function(){...}”我们能够创建一个函数并让它在这个XMLHttpRequest对象的状态每次发生改变的时候立刻运行。这里总共有五个状态,由0走到4。
0 – 尚未初始化(在这个XMLHttpRequest开始前)
1 – 加载(XMLHttpRequest初始化一结束)
2 – 加载结束(XMLHttpRequest一从服务器上获得一个回应)
3 – 交互(当XMLHttpRequest对象和服务器连接中)
4 – 结束(当XMLHttpRequest被告知它已经完成了所有人物并结束运行)
这第五个状态(数字4)就是我们能够确定数据已经可用的标志,所以我们检验这个xmlObj.readyState是否等于“4”来确定数据是否可用,如果是4,我们运行updateObj函数。这个函数带两个参数:一个当前web页面的元素ID(当前web页面中要更新的元素)以及用于填充这个元素的数据。这个函数的运行方式在稍后将更详细地解释。
我们的web页面的p元素有一个id“xmlData”,这就是我们准备更新的段落。我们正在取得的数据来自于XML文件,但它有点复杂。这里是它如何工作的原理。
xmlObj.responseXML属性是一个DOM对象 - 它很象“document”对象,除了它来自远程的XML文件。换句话说,如果你在data.xml中运行脚本,那xmlObj.responseXML就是一个“document”对象。因为我们知道这些,我们能够通过“getElementsByTagName”方法取得任何XML节点。数据包含在一个命名为“<data>”的XML节点中,所以我们的任务很简单:取得第一个(而且只有这一个)数据节点。因而,xmlObject.responseXML.getElementsByTagName("data")[0]返回XML文件中的第一个<data>节点。
注意:它返回的是XML节点,而不是节点中的数据-这个数据必须通过访问XML节点的属性取得,这就是下一步要说的。
接下来,取得数据只需要简单的指定“firstChild.data”(firstChild指向了那个被<data>节点包含的文本节点,而这个“data”属性则是这个文本节点的实际文本)。
CODE:
[Copy to clipboard]
xmlObj.open ('GET', file, true);
xmlObj.send ('');
这是我们的ajaxRead函数的最后一个部分。它说了些什么?嗯,xmlObj的这个“open”方法打开了一个到服务器(通过一个指定的协议,这里指定的是“GET”-你可以使用“USE”或者其他别的协议)的连接,去请求一个文件(在我们的例子里,变量“file”被作为一个参数赋给ajaxRead函数-data.xml),而且javascript可以同步(false)或者异步(true,默认值)的处理请求。由于这是异步的Javascript和XML(AJAX),我们将使用默认的异步方式-在这个例子中,使用同步方式将不起作用。
这是我们函数中的最后一行,它简单的发送一个空字符串回服务器。如果没有这行,xmlObj的readyState永远不会到4,所以你的页面永远不会更新。这个send方法能够用于作其他事情,但今天我只是用来从服务器上取得数据-并不发送它-所以在这篇文章中我不准备介入任何关于send方法的细节。
CODE:
[Copy to clipboard]
function updateObj(obj, data){
document.getElementById(obj).firstChild.data = data;
}
现在再稍微解释一下updateObj函数:这个函数使用一个新的值来更新当前页面上任何指定的元素。他的第一个参数,“obj”是当前页面中元素的ID-那个要被更新的对象;它的第二个参数,“data”是用来将那个将被替换值的对象(“obj”)的内容替换掉。一般来说,检验一下并确定当前页面上确实有一个元素的ID是“obj”是比较明智的,但对我们的脚本的这个隔离级别来说校验并不必要。这个函数更新的方式和我们之前从XML文件的“data”节点取得数据的方式类似-它定位它要更新的元素(这时候这个元素的ID代替了它的标签名和在页面中的索引)并设置这个元素的第一个子节点(文本节点)的data属性为新的值。如果你需要使用HTML而不是纯文本来更新一个元素,你也可以使用
CODE:
[Copy to clipboard]
document.getElementById(obj).innerHTML = data
这就是全部了
这个概念很简单,而且代码也不是很难。你能够从某个地方读取一个文件并且不需要重新加载这个web页面。你有足够的灵活性来作各种事情,包括从表单发送数据(不需要重新加载web页面)并且使用一个服务端语言来动态生成XML文件。如果你需要更近一步,记得这个连接是很有用的-哦,还要记得Google是你朋友。在另外的文章中,我将解释你如何配合服务端技术使用AJAX来构造强大的web应用程序。
分享到:
相关推荐
通过逐步学习和实践,开发者可以利用Ajax技术构建更高效、更动态的Web应用程序。在后续的学习中,你可以探索更多高级话题,如使用JSON替代XML、处理异步请求的错误、优化Ajax性能以及与其他前端框架(如jQuery、Vue....
在提供的文件中,"用AJAX开发智能Web应用程序之基础篇source1.zip"和"用AJAX开发智能Web应用程序之基础篇source2.zip"可能包含了一些示例代码或教程,帮助学习者理解AJAX的实践应用。而"天极软件www.mydown.com.txt"...
**Ajax技术详解与智能Web应用程序开发** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器交换数据并局部更新页面,提高了用户体验,使得...
使用 AJAX 技术可以构建更为动态和响应更灵敏的 Web 应用程序。例如,以“级联菜单”为例,使用 AJAX 技术可以在不刷新整个页面的情况下实时获取服务器端的数据,提高用户体验和满意度。 六、 结论 AJAX 技术是 ...
### AJAX技术在Web模式开发中的...通过对AJAX技术的研究和应用,我们可以开发出更高质量、更富交互性的Web应用程序,为用户提供更好的上网体验。未来,随着Web技术的进一步发展,AJAX将在更多领域展现出其独特的价值。
总结来说,Ajax技术的引入极大地推动了Web 2.0的发展,使得Web应用程序更加动态和交互性更强。然而,随着客户端代码的增加,安全问题也随之而来,例如XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等。因此,在利用...
AJAX技术是当前Web应用开发中的一种关键技术,它可以实现异步交互,提高Web应用程序的数据交换速度和响应速度。本文将对AJAX技术的工作原理、主要技术和应用情况进行研究和分析,并讨论基于AJAX技术的搜索引擎与传统...
在实际应用中,AJAX技术可以与其他技术结合使用,例如与服务器端的PHP、JSP等技术结合使用,提高Web应用程序的开发效率和性能。同时,AJAX技术也可以与其他客户端技术结合使用,例如与Flash、Silverlight等技术结合...
在这个阶段,学员会学习如何利用Ajax和.NET控件技术开发Web应用系统,提升实际项目开发能力。 课程可能涵盖以下主题: 1. **Ajax基础**: 学习Ajax的基本原理,创建简单的Ajax请求。 2. **jQuery与Ajax**: 使用...
### 基于AJAX技术的Web模型在网站开发中的应用研究 #### 一、引言 随着互联网技术的快速发展,用户体验成为了评价一个网站好坏的重要标准之一。传统的B/S架构虽然简单易用,但在用户体验方面存在诸多不足。例如,...
Web 2.0是互联网发展的一个重要阶段,它标志着用户从...总之,Ajax技术是Web 2.0时代的重要组成部分,它极大地改变了我们使用互联网的方式,通过这本书的学习,开发者可以掌握创建动态、交互性强的Web应用程序的技能。
Ajax(Asynchronous JavaScript and XML)技术是Web开发中的一种创新,它改变了传统的Web应用程序的工作方式,使得用户可以实现无需刷新整个页面即可与Web应用程序进行实时交互。Ajax技术的核心在于利用JavaScript...
基于AJAX技术构建新型Web应用程序能够提供更好的用户体验和服务器性能,提高Web应用程序的整体性能。 知识点: * AJAX技术的基本概念 * AJAX技术的工作原理 * 基于AJAX技术构建新型Web应用程序的设计和实现 * 异步...
Mail 等Web应用程序中都使用了Ajax技术,提高了用户体验和系统的响应速度和效率。 Ajax技术的发展趋势: Ajax技术的发展趋势是朝着更加智能化、更加高效化和更加人性化的方向发展。未来,Ajax技术将会更好地支持...
AJAX技术的出现改变了传统的Web开发模式,提高了Web应用程序的可用性和用户体验。 AJAX的主要特点是使用JavaScript和XML来实现异步通信,减少了页面的重新加载次数,提高了Web应用程序的响应速度和交互性。AJAX技术...
如今,AJAX技术给客户端Web应用程序的开发带来巨大的影响。这种构建Web应用程序的新方法—在后台发送http请求而不需要页面重载—已经为当今电子邮件软件(它们原来被作为桌面应用程序设计和开发)的开发提供了若干种...
【使用AJAX技术构建更优秀的Web应用程序】 AJAX(异步JavaScript和XML)是一种Web开发技术,用于创建具有高度交互性的网页应用。通过AJAX,开发者可以在不刷新整个页面的情况下,从服务器获取并更新少量数据,提高...
Web应用程序的Ajax应用是现代网页开发中的关键技术,它极大地提升了用户体验,通过异步数据传输实现了页面的无刷新更新。Ajax,全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML),虽然名字中包含XML...