永州网,内容丰富有趣,生活中的好帮手!
永州网 > 生活 > 正文

深入学习Ajax技术:构建高效的Web应用程序

时间:2024-05-03 09:10:53

相关推荐

深入学习Ajax技术:构建高效的Web应用程序

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习推荐的如何使用Ajax技术开发Web应用程序(1),过去的都会过去,迎接崭新的开始,释放更美好的自己。

在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制。虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向。在过去的几个月里,一个过去并不被广泛支持的技术已经被越来越多的web冲浪者(web surfers??是指浏览器还是浏览者?)所接受,它给了开发者更多的自由开发先进的web应用程序。这些通过javascript来异步取得xml数据的应用程序,被亲切的称为“Ajax应用程序”(AsynchronousJavascript andXMLapplications)。在这篇文章中,我将会解释如何通过Ajax来取回一个远程的XML文件并更新一个web page,并且随着这个系列的继续,我将讨论更多的方法,使用ajax技术将你的web应用程序提升到一个新的层次.

这第一步就是创建一个带一些数据的XML文件。我们将这个文件命名为data.xml。它是一个简单的XML文件,而在一个真实的程序中,它会复杂许多,但对于我们的例子来说,简单明了是最合适地。

<?xml version="1.0" encoding="UTF-8"? <root <data 这是一些示例数据,它被保存在一个XML文件中,并被JavaScript取回。 </data </root

现在让我们创建一个简单的web页面包含一些示例数据。这个页面将是我们的js脚本所在,并且这个页面将会让用户们访问柄看到Ajax脚本的运行。我们把它命名为

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"

""

<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

这是一些示例数据,它是这个网页的默认数据 <a href="data.xml"

title="查看这个XML数据." 查看XML数据.</a

</p

</body

</html

注意,对于那些没有javascript的用户,我们直接链接到data.xml文件。对于那些允许运行javascript的用户,函数“ajaxRead”将被运行,这个链接被隐藏,并不会被转向到那个data.xml文件。函数“ajaxRead”现在还没定义。所以如果你要检验上面的示例代码,你会得到一个javascript错误。让我们继续并定义这个函数(还有其他的),让你能够看到ajax是如何工作的,下面的脚本要放到你的head标签里:

<script type="text/javascript" <!--

function ajaxRead(file){

var xmlObj = null;

if(){

xmlObj = new XMLHttpRequest();

} else if(){

xmlObj = new ActiveXObject("");

} else {

return;

}

= function(){

if( == 4){

updateObj('xmlObj', (&#&#));

}

}

('GET', file, true);

('');

}

function updateObj(obj, data){

() = data;

}

//-- </script

这堆代码有点多,让我们一点点的进行。第一个函数叫做“ajaxRead”-也就是我们在页面的“查看XML数据”链接中调用的函数,我们定义了一个“xmlObj”变量-这将作为客户端(用户正在查看的这个web页面)以及服务端(web站点本身)之间的中间件。我们在一个if/else块中定义这个对象:

if(){

xmlObj = new XMLHttpRequest();

} else if(){

xmlObj = new ActiveXObject("");

} else {

return;

}

这只是一个对不同对象是否可用的测试-某些浏览器实现了不同的XMLHttpRequest对象,所以当我们定义“xmlObj”作为我们的XMLHttpRequest对象时,我们不得不根据浏览器所实现的来定义它。如果没有可用的XMLHttpRequest对象,我们将执行“return”语句结束这个函数以避免脚本错误。在大部分情况下,这个检验将返回一个XMLHttpRequest对象-这部分代码应该能够在绝大部分的浏览器上工作,除了少部分比较老的浏览器的异常情况(它能够工作在ie5.01上,但是在netscape4上会使函数终止)。

接下来是这些代码块:

= function(){

if( == 4){

updateObj('xmlObj', (&#&#));

}

}

每次XMLHttpRequest的状态发生变化,事件“onreadystatechange”就会被触发。通过使用“ = function(){...}”我们能够创建一个函数并让它在这个XMLHttpRequest对象的状态每次发生改变的时候立刻运行。这里总共有五个状态,由0走到4。

0 – 尚未初始化(在这个XMLHttpRequest开始前)

1 – 加载(XMLHttpRequest初始化一结束)

2 – 加载结束(XMLHttpRequest一从服务器上获得一个回应)

3 – 交互(当XMLHttpRequest对象和服务器连接中)

4 – 结束(当XMLHttpRequest被告知它已经完成了所有人物并结束运行)

这第五个状态(数字4)就是我们能够确定数据已经可用的标志,所以我们检验这个是否等于“4”来确定数据是否可用,如果是4,我们运行updateObj函数。这个函数带两个参数:一个当前web页面的元素ID(当前web页面中要更新的元素)以及用于填充这个元素的数据。这个函数的运行方式在稍后将更详细地解释。

我们的web页面的p元素有一个id“xmlData”,这就是我们准备更新的段落。我们正在取得的数据来自于XML文件,但它有点复杂。这里是它如何工作的原理。

属性是一个对象 - 它很象“document”对象,除了它来自远程的XML文件。换句话说,如果你在data.xml中运行脚本,那就是一个“”对象。因为我们知道这些,我们能够通过“”方法取得任何节点。数据包含在一个命名为“< ”的XML节点中,所以我们的任务很简单:取得第一个(而且只有这一个)数据节点。因而,("")返回文件中的第一个< 节点。

注意: 它返回的是XML节点,而不是节点中的数据-这个数据必须通过访问XML节点的属性取得,这就是下一步要说的。

接下来,取得数据只需要简单的指定“”(指向了那个被< 节点包含的文本节点,而这个“data”属性则是这个文本节点的实际文本)。

('GET', file, true);

('');

这是我们的ajaxRead函数的最后一个部分。它说了些什么?嗯,xmlObj的这个“open”方法打开了一个到服务器(通过一个指定的协议,这里指定的是“GET”-你可以使用“USE”或者其他别的协议)的连接,去请求一个文件(在我们的例子里,变量“file”被作为一个参数赋给ajaxRead函数-data.xml),而且javascript可以同步(false)或者异步(true,默认值)的处理请求。由于这是异步的Javascript和XML(AJAX),我们将使用默认的异步方式-在这个例子中,使用同步方式将不起作用。

这是我们函数中的最后一行,它简单的发送一个空字符串回服务器。如果没有这行,xmlObj的readyState永远不会到4,所以你的页面永远不会更新。这个send方法能够用于作其他事情,但今天我只是用来从服务器上取得数据-并不发送它-所以在这篇文章中我不准备介入任何关于send方法的细节。

function updateObj(obj, data){

() = data;

}

现在再稍微解释一下updateObj函数:这个函数使用一个新的值来更新当前页面上任何指定的元素。他的第一个参数,“obj”是当前页面中元素的ID-那个要被更新的对象;它的第二个参数,“data”是用来将那个将被替换值的对象(“obj”)的内容替换掉。一般来说,检验一下并确定当前页面上确实有一个元素的ID是“obj”是比较明智的,但对我们的脚本的这个隔离级别来说校验并不必要。这个函数更新的方式和我们之前从XML文件的“data”节点取得数据的方式类似-它定位它要更新的元素(这时候这个元素的ID代替了它的标签名和在页面中的索引)并设置这个元素的第一个子节点(文本节点)的data属性为新的值。如果你需要使用HTML而不是纯文本来更新一个元素,你也可以使用

() = data

这就是全部了

这个概念很简单,而且代码也不是很难。你能够从某个地方读取一个文件并且不需要重新加载这个web页面。你有足够的灵活性来作各种事情,包括从表单发送数据(不需要重新加载web页面)并且使用一个服务端语言来动态生成XML文件。如果你需要更近一步,记得这个 连接 是很有用的-哦,还要记得Google是你朋友。在另外的文章中,我将解释你如何配合服务端技术使用AJAX来构造强大的web应用程序。

在上一篇文章中,我们讨论了如何通过javascript从一个远程XML文件中取得数据。在这篇文章中,我们将学会怎样对数据作更复杂的处理。作为一个示例,我们会准备一组XML数据,将数据分割成独立的片断并以不同的方式展示这些片断(取决于它们是如何被标识的)。

这篇文章是建立在上一篇文章中构造的示例代码的基础之上,所以如果你不能理解我们现在的代码,你可以回过头去读第一篇文章(sheneyan注:就在上面)。

开始~

让我们开始我们的第一步:构造XML。我们准备写一个XML文档,它组织了一系列准备让javascript处理的数据,所以我们将一起组织一些节点和子节点(或者,元素和子元素)。在这个例子里,我们将使用一些家庭宠物的名字:

<?xml version="1.0" encoding="UTF-8"?

<data

<pets

<pet 猫</pet

<pet 狗</pet

<pet鱼</pet

</pets

</data

在上面,我们有这个XML声明(标明这个文档是一个XML 1.0 文档,使用UTF-8编码),一个根元素(<data )将下面所有的元素组合在一起,一个<pets 元素组织了所有的宠物,然后一个<pet 节点对应一只宠物。为了指定每一只宠物是什么类型的动物,我们在<pet 元素中设置了文本节点:猫,狗,鱼。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"

""

<html lang="zh" dir="ltr"

<head

<meta http-equiv="Content-Type" content="text/html; charset=gb2312"

<title 使用Ajax开发Web应用程序 - 示例</title

<script type="text/javascript" <!--

function ajaxRead(file){

var xmlObj = null;

if(){

xmlObj = new XMLHttpRequest();

} else if(){

xmlObj = new ActiveXObject("");

} else {

return;

}

= function(){

if( == 4){

processXML();

}

}

('GET', file, true);

('');

}

function processXML(obj){

var dataArray = (&#&#);

var dataArrayLen = ;

var insertData = '<table <tr <th '

+ 'Pets</th </tr ';

for (var i=0; i<dataArrayLen; i++){

insertData += '<tr <td ' + dataArray[i]. + '</td </tr ';

}

insertData += '</table ';

('dataArea').innerHTML = insertData;

}

//-- </script

</head

<body

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(2)
  1. 旒璃梦2024-05-03 10:05旒璃梦[河南省网友]113.212.187.232
    Ajax技术的深入学习对于提升自己的Web开发能力非常重要,能够让我的应用程序更加高效和用户友好。
    顶14踩0
  2. 钩钩2024-05-03 09:38钩钩[浙江省网友]123.207.161.105
    深入学习Ajax技术可以让我更好地构建出响应迅速、用户体验良好的Web应用程序,非常值得投入时间和精力。
    顶0踩0
相关阅读
优化网站打开速度:提升网页访问速度的技巧方法总结

优化网站打开速度:提升网页访问速度的技巧方法总结

通过优化网页访问速度,可以让用户更快地获取所需信息,降低用户的等待时间,提高转化率

2024-03-02

ASP.NET中如何防范SQL注入式攻击

ASP.NET中如何防范SQL注入式攻击

通过输入恶意的SQL代码,攻击者可以绕过应用程序的安全验证,访问、修改、删除数据库中的数据,甚至获取敏感信息

2024-03-12

探寻MMT代码的含义:解析其背后的意义和应用领域

探寻MMT代码的含义:解析其背后的意义和应用领域

在软件开发中,MMT代码是一种将数据模型、用户界面和模板结合起来的设计模式,旨在使开发人员能够更有效地管理和组织代码

2024-01-28

探讨JSP应用中的安全挑战与解决方案

探讨JSP应用中的安全挑战与解决方案

随着Web应用的普及和攻击技术的不断发展,JSP应用存在着诸多潜在的安全风险

2024-02-17

如何让VB程序穿上漂亮外衣 — Windows Live

如何让VB程序穿上漂亮外衣 — Windows Live

本书通过实际案例和详细教程,教读者如何使用Windows Live平台的设计工具、图形用户界面和样式库,为VB程序添加独特的风格和互动效果

2024-03-08