锁定老帖子 主题: ajax入门详解(二)
精华帖 (0) :: 良好帖 (3) :: 新手帖 (8) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-03
最后修改:2010-04-08
打开请求 有了要连接的
URL
后就可以配置请求了。可以用
XMLHttpRequest
对象的
open()
方法来完成。该方法有五个参数:
代码 4 getCustomerInfo() 方法的改进: function getCustomerInfo() { 一旦设置好了 URL ,其他就简单了。多数请求使用 GET 就够了,再加上 URL ,这就是使用 open() 方法需要的全部内容了。 发送请求
var url = "/cgi-local/lookupCustomer.jsp?phone=" + escape(phone); 代码 5 getCustomerInfo() 方法的进一步改进: function getCustomerInfo() { function getCustomerInfo() { 现在剩下的就只有编写 updatePage() 方法了。 代码 7. 检查就绪状态 function updatePage() { 其中 request.readyState 是 HTTP 的就绪状态,在这里我们大概需要了解这 5 种状态,关于其详细意义,我们在这就不在做深入研究了。 request.readyState == 0
:请求没有发出(在调用
open()
之前)。
而接下来的 request.status 为 HTTP 状态码,为 200 的时候为正常, 400 多的时候为客户端的错误, 500 多的时候为服务器端的服务,如果您对这方面的知识感兴趣,不妨可以去借一些 HTTP 协议之类的书看看,这里也不做深入研究了。 l 读取响应文本 当我们成功做完上面的一切时,服务器最后给出了处理的响应,我们可以把响应的内容 以 responseText 或者 responseXML 形式组织返回给客户端供其调用。 responseXML 的话,要涉及到对 XML 的操作,因为 jdk 本身对 XML 的操作比较弱,不过我们可以运用第三方的包 org.jdom (网上有的下载),如果大家有兴趣,可以自己去研究,这里我们简单的给出一个 responseXML 的用法的例子 代码 8. responseText 的简单运用 function updatePage() { l Ajax 应用场景 然而 Ajax 不是万能的,在适合的场合使用 Ajax ,才能充分发挥它的长处,改善系统性能和用户体验,绝不可以为了技术而滥用。 Ajax 的特点在于异步交互,动态更新 web 页面,因此它的适用范围是交互较多,频繁读取数据的 web 应用。现在来看几个 Ajax 的应用实例,读者可以了解如何使用 Ajax 技术改进现有的 web 应用系统。 场景 1. 数据验证 在填写表单内容时,需要保证数据的唯一性(例如新用户注册填写的用户名),因此必须对用户输入的内容进行数据验证。数据验证通常有两种方式:一种是直接填写,然后提交表单,这种方式需要将这个页面提交到服务器端进行验证,整个过程不仅时间长而且造成了服务器不必要的负担;第二种方式是改进了的验证过程,用户可以通过点击相应的验证按钮,打开新窗口查看验证结果,但是这样需要新开一个浏览器窗口或者对话框,还需要专门编写验证的页面,比较耗费系统资源。而使用 Ajax 技术,可以由 XMLHttpRequest 对象发出验证请求,根据返回的 HTTP 响应判断验证是否成功,整个过程不需要弹出新窗口,也不需要将整个页面提交到服务器,快速而又不加重服务器负担。 场景 2. 按需取数据 分类树或者树形结构在 web 应用系统中使用得非常广泛,例如部门结构,文档得分类结构常常使用树形空间呈现。以前每次对分类树得操作都会引起页面重载,为了避免这种情况出现,一般不采用每次调用后台得方式,而是一次性将分类结果中得数据一次性读取出来并写入数组,然后根据用户的操作,用 JavaScript 来控制节点的呈现,这样虽然解决了操作响应速度,不重复载入页面以及避免向服务器频繁发送请求的问题,但是如果用户不对分类进行操作或者只对分类树中的一部分数据进行操作的话(这种情况很普遍的),那么读取的数据中就会有相当大的冗余,浪费了用户的资源。特别是在分类结构复杂,数据庞大的情况下,这种弊端就更加明显了。 现在应用 Ajax 改进分类树的实现机制。在初始化页面时,只获取第一级子分类的数据并且显示;当用户点开一级分类的第一节点时,页面会通过 Ajax 向服务器请求当前分类所属的二级子分类的所有数据;如果再请求已经呈现的二级分类的某一节点时,再次向服务器请求当前分类所属的三级子分类的所有数据,以此类推。页面会根据用户的操作向服务器请求它所需要的数据,这样就不会存在数据的冗余,减少了数据下载总量。同时,更新页面时不需要重载所有内容,只更新需要更新的那部分内容即可,相对于以前后台处理并且重载的方式,大大缩短了用户的等待时间。 场景 3. 自动更新页面 在 web 应用中有很多数据的变化时十分迅速的,例如最新的热点新闻,天气预报以及聊天室内容等。在 Ajax 出现之前,用户为了即使了解相应的内容必须不断刷新页面,查看是否有新的内容变化,或者页面本身实现定时刷新的功能(大多数聊天室页面就是这样做的)。有可能会发生这种情况;有一段时间网页的内容没有发生任何变化,但是用户并不知道,仍然不断的刷新页面;或者用户失去了耐心,放弃了刷新页面,却很有可能在此有新的消息出现,这样就错过了第一时间得到消息的机会。 应用 Ajax 可以改善这种这种情况,页面加载以后,会通过 Ajax 引擎在后台进行定时的轮询,向服务器发送请求,查看是否有最新的消息。如果有则将新的数据(而不是所有数据)下载并且在页面上进行动态的更新,通过一定的方式通知用户(实现这样的功能正是 JavaScript 的强项)。这样即避免了用户不断手工刷新页面的不便,也不会因为重复刷新页面造成资源浪费。 l 结束语 完成了,真是累死了,经过大量的翻阅 ajax 方面的书籍以及网上的一些博文,花了几个礼拜的时间终于整理写成了这篇文章,但是这里仅仅只是讲了一点 Ajax 方面的基础,真正要灵活的运用 Ajax ,我们还必须熟练的掌握 XML , javascript , DOM 等许多技术,因此我希望对 Ajax 有兴趣的朋友一同加入到探索研究 Ajax 队伍行列中,使 Ajax 的明天更加繁荣强大。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-04-07
为什么不使用JQuery的ajax呢?
|
|
返回顶楼 | |
发表时间:2010-04-07
cnyangqi 写道 为什么不使用JQuery的ajax呢? 人家是告诉你基础!
|
|
返回顶楼 | |
发表时间:2010-04-07
最后修改:2010-04-07
cnyangqi 写道 为什么不使用JQuery的ajax呢?
为什么不看人家写的标题和内容呢? |
|
返回顶楼 | |
发表时间:2010-04-08
喜欢这类的文章
|
|
返回顶楼 | |
发表时间:2010-04-08
支持一下~出现一些基础类文章对我这类新人来说还是很好的
|
|
返回顶楼 | |
发表时间:2010-04-09
感觉有点眉目了,不如这样楼主,你再推出第三期,贴上几个简单的例子。我们大家都是程序员,喜欢看代码不喜欢看文字。
|
|
返回顶楼 | |
发表时间:2010-04-20
写的不错,讲解很细致,对于我这样的新手比较适合,再次感谢。
|
|
返回顶楼 | |
发表时间:2010-06-10
我也过来 看看 感觉不错的说
|
|
返回顶楼 | |
发表时间:2010-06-25
LZ写得好啊。
|
|
返回顶楼 | |