AjAX核心大纲

Ajax是一项综合的技术,Ajax的使用过程,首先是在HTML控件中添加相应的事件触发属性,使其具备事件触发能力;其次是编写事件处理函数,并在这 个函数中初始化XMLHttpRequest对象,指定响应处理程序,创建http请求,设置必要的http请求头信息,向服务器发送所创建的http请 求;最后才是创建响应处理函数,在对http请求状态进行判断的基础上作出既定的业务处理事务。
       (一)事件处理函数,按照以下顺序处理下列事务:
                a) 初始化XMLHttpRequest对象;
                 实现代码如下:
                  if(widow.XMLHttpRequest) {//Mozilla,Safari,.......
                    http_request= new XMLHttpRequest();
                    } else if(window.ActiveXObject) {//IE
                    http_request= new ActiveXObject("Microsoft.XMLHTTP");
                    } else {
                       window.alert("浏览器没有实现XMLHttpRequest 组件对象!");
                    }
                b) 设置XMLHttpRequest对象的onreadystatechange 属性,指定服务器返回响应数据时要调用的回调函数, 即指定响应处理函数;
                实现代码如下:
                 http_request.onreadystatechange=processRequest;
                c) 调用XMLHttpRequest对象的open方法,创建http请求;
                  实现代码如下:
                   http_request.open("GET", "http://www.example.org/some.file", true);
                 d) 调用XMLHttpRequest对象的setRequestHeader等方法,设置必要的http请求头信息;
                   实现代码如下:
                    http_request.setRequestHeader("Content-Type",application/x-www-form-urlencoded);
                 e) 调用XMLHttpRequest对象的send方法,发送之前创建的http请求;
                   实现代码如下:
                   http_request.send(null);
                 f)  根据XMLHttpRequest对象的open方法参数,决定是否等待服务器返回响应数据.
     (二)回调函数(响应处理函数)执行以下事务:
    aa) 判断http请求的状态,并作相应处理;
                bb) 调用XMLHttpRequest对象的responseXML or responseText方法,将服务器返回的响应数据赋予Javascript变量或对象;
                cc) 使用DOM或其它方式解析服务器返回的响应数据,保存在缓存变量或数组中;
                dd) 使用DOM解析HTML文档,定位目标HTML文档节点;
                ee)  使用解析完毕的服务器返回的响应数据,更新上一步解答分析HTML文档节点的属性值或内容,从而更新HTML文档页面内容.


Ajax控件和类库简析

【导读】Ajax控件和类库现在真的太多了,本人对Ajax的观点:Ajax和服务器端技术毫不相关,DOM模型是Ajax最本质的技术,要学好JavaScript,在使用Ajax控件前理解它们的实现……
 
 
 

Ajax控件和类库现在真的太多了,不知不觉中增加了Ajax的神秘性和复杂性,谈谈本人对Ajax的观点,希望能让大家对Ajax有一个本质的认识。

观点一:Ajax和服务器端技术毫不相关

严 格的说,与传统web开发相比,Ajax是完完全全的客户端技术。由于很多控件封装了客户端和服务器端的通信过程,因此很多问题也因通信而起。事实上,不 论何种Ajax技术,服务器端都是返回的一个纯文本流,再由客户端来处理这个文本。这段文本可以是xml格式,也可以是一个Html片段,也可以是一段 JavaScript脚本,或者仅是一个字符串。服务器端仅仅是作为一个数据接口,客户端使用XMLHttpRequest对象来请求这个页面,服务器端 在页面内写入结果文本,这个过程和普通的web开发没有任何区别。所不同的只是,客户端在异步获取结果后,不是直接显示在页面,而是由客户端的 Javascript脚本处理后再显示在页面。至于各种控件所谓的能返回DataSet对象,Date对象,或者其他的数据类型,都是封装了这个处理过程 的结果。

观点二:DOM模型是Ajax最本质的技术

之所以没有把XMLHttpRequest列为最本质的技术,因为本 人觉得它实在是太简单了,它只是可以让浏览器在后台请求一个页面,并将其内容交给JavaScript处理。真正的核心应该是:DOM模型,即文档对象模 型。在DOM模型里,Html标记都被认为是一个对象,例如:div对象,table对象等等。DOM模型就规定了这些对象所具有的属性、方法和事件。通 过这些性质,可以对一个已经显示于浏览器的页面进行内容的修改,例如增加节点、修改节点位置,删除节点等等。而不仅仅是一个innerHTML属性这么简 单,虽然这是一个很有用的属性。

观点三:在使用Ajax控件前理解它们的实现

使用Ajax控件的确可以提高效率,但如果 你空中楼阁般使用控件,那就得不偿失了。从一个控件换到另外一个控件又会有一个漫长的学习曲线。所以应该从底层了解其,况且Ajax实在不是什么高深的技 术。其实任何东西的最底层其实都是简单的,但如果封装了这些底层的东西,事情会变得复杂和难以理解。以Asp.net为例,它的定制特性可以使得只要在方 法前加上[ajax method]类似这样的标志就可以称为一个异步方法,相信这使得Asp.net的Ajax开发显得更加“高效”或者是“神秘”,而更多的事情则被封装 了。同样记住一条,任何对服务器端的请求仅仅是返回纯文本,我们不一定要依赖于封装好的处理过程,而完全可以自己来实现。

观点四:学好JavaScript

在 大多数人看来,JavaScript总不是那么一种正规的语言,随便copy一段就碰巧能运行,学过c之类的人,一看也能看懂,而且在浏览器中常常有脚本 错误提示,所以潜意识觉得总不能付之以大任。事实上,要学好Ajax,这就完全是一种错误的看法。javascript作为一种脚本语言,其语法的确不是 很严格,但并不妨碍其完成诸多复杂的任务,没有JavaScript,就没有Ajax。所以本人强烈建议,学Ajax前,一定要好好研究一番 JavaScript,一般来讲,如果能顺利看懂prototype框架的代码(如:prototype-1.3.1.js),你的JavaScript 水平就基本过关了。同时对DOM模型也可以算有一个基本的了解。

观点五:Ajax点缀:CSS

用JavaScript控 制CSS其实很简单,基本上每个DOM对象都有一个style对象,只要把css属性里的"-"去掉,并让随后的字母变为大写就可以作为属性使用了,例 如:element.style.backgroundColor="#f00";在css是:选择符 {background-color:#f00}

posted on 2007-06-13 09:58 chenguo 阅读(211) 评论(0)  编辑  收藏 所属分类: AJAX Dev


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

留言簿

随笔分类(1)

文章分类(52)

好友 小山的博客

最新随笔

最新评论