首页 新闻 会员 周边

请教大侠们一个js异步刷新的问题

0
悬赏园豆:10 [已解决问题] 解决于 2010-03-16 09:27

开发有段时间了,js的异步刷新也用的不少,但是不是很明白异步调用真正适合用于那些场合,希望大侠们能够详细的指点一下,最好能说明使用的场合及原因!不胜感激

Tear Y的主页 Tear Y | 小虾三级 | 园豆:784
提问于:2010-03-15 14:17
< >
分享
最佳答案
0

Js异步刷新,其实也就是ajax技术的适用场合。网上有人整理过一下6项可供你参阅。

1.表单驱动的交互
传统的表单提交,在文本框输入内容后,点击按钮,后台处理完毕后,页面刷新,再回头检查是否刷新结果正确.使用Ajax,在点击submit按钮后,立刻进行异步处理,并在页面上快速显示了更新后的结果,这里没有整个页面刷新的问题.
2.深层次的树的导航
深层次的级联菜单(树)的遍历是一项非常复杂的任务,使用JavaScript来控制显示逻辑,使用Ajax延迟加载更深层次的数据可以有效的减轻服务器的负担.
我们以前的对级联菜单的处理多数是这样的:
为了避免每次对菜单的操作引起的重载页面,不采用每次调用后台的方式,而是一次性将级联菜单的所有数据全部读取出来并写入数组,然后根据用户的操作用 JavaScript来控制它的子集项目的呈现,这样虽然解决了操作响应速度,不重载页面以及避免向服务器频繁发送请求的问题,但是如果用户不对菜单进行 操作或只对菜单中的一部分进行操作的话,那读取的数据中的一部分就会成为冗余数据而浪费用户的资源,特别是在菜单结构复杂,数据量大的情况下(比如菜单有 很多级,每一级菜又有上百个项目),这种弊端就更为突出.
如果在此案中应用Ajax后,结果就会有所改观:
在初始化页面时我们只读出它的第一级的所有数据并显示,在用户操作一级菜单其中一项时,会通过Ajax向后台请求当前一级项目所属的二级子菜单的所有数据,如 果再继续请求已经呈现的二级菜单中的一项时,再向后面请求所操作二级菜单项对应的所有三级菜单的所有数据,以此类推……这样,用什么就取什么,用多少就取 多少,就不会有数据的冗余和浪费,减少了数据下载总量,而且更新页面时不用重载全部内容,只更新需要更新的那部分即可,相对于后台处理并重载的方式缩短了 用户等待时间,也把对资源的浪费降到最低.
3.快速的用户与用户间的交流响应
在众多人参与的交流讨论的场景下,最不爽的事情就是让用户一遍又一遍刷新页面以便知道是否有新的讨论出现.新的回复应该以最快的速度显示出来,而把用户从分神的刷新中解脱出来,Ajax是最好的选择.
4.类似投票,yes/no等无关痛痒的场景
对于类似这样的场景中,如果提交过程需要达到40秒,很多的用户就会直接忽略过去而不会参与,但是Ajax可以把时间控制在1秒之内,从而更多的用户会加入进来.
5.对数据进行过滤和操纵相关数据的场景
对数据使用过滤器,按照时间排序,或者按照时间和名称排序,开关过滤器等等.任何要求具备很高交互性数据操纵的场合都应该用JavaScript,而不是用一系列的服务器请求来完成.在每次数据更新后,再对其进行查找和处理需要耗费较多的时间,而Ajax可以加速这个过程.
6.普通的文本输入提示和自动完成的场景
在文本框等输入表单中给予输入提示,或者自动完成,可以有效的改善用户体验,尤其是那些自动完成的数据可能来自于服务器端的场合,Ajax是很好的选择.

更多的可以搜索下 ajax适用场景... ^V^

收获园豆:10
西越泽 | 专家六级 |园豆:10775 | 2010-03-15 15:05
非常感激!!!!!!!!
Tear Y | 园豆:784 (小虾三级) | 2010-03-15 16:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册