Ajax适用场景 1.表单驱动的交互 传统的表单提交,在文本框输入
内容后,点击按钮,
后台处理完毕后,
页面刷新,再回头检查是否刷新结果正确。使用Ajax,在点击sunmit按钮后,立刻进行异步处理,并在
页面上
快速显示了更新后的结果,这里没有整个
页面刷新的问题。 2.深层次的树的导航 深层次的级联
菜单(树)的遍历是一项非常复杂的任务,使用JavaScript来控制
显示逻辑,使用Ajax延迟加载更深层次的数据可以有效的减轻服务器的负担。 我们以前的对级联
菜单的处理多数是这样的: 为了避免每次对
菜单的操作引起的重载
页面,不采用每次
调用后台的方式,而是一次性将级联
菜单的所有数据全部读取出来并写入数组,然后根据
用户的操作用 JavaScript来控制它的子集项目的呈现,这样虽然
解决了操作响应速度、不重载
页面以及避免向服务器频繁发送请求的问题,但是如果
用户不对
菜单进行 操作或只对
菜单中的一部分进行操作的话,那读取的数据中的一部分就会成为冗余数据而浪费
用户的资源,特别是在
菜单结构复杂、数据量大的情况下(比如
菜单有 很多级、每一级菜又有上百个项目),这种弊端就更为突出。 如果在此案中应用Ajax后,结果就会有所改观: 在初始化
页面时我们只读出它的第一级的所有数据并
显示,在
用户操作一级
菜单其中一项时,会通过Ajax向
后台请求当前一级项目所属的二级子
菜单的所有数据,如 果再继续请求已经呈现的二级
菜单中的一项时,再向后面请求所操作二级
菜单项对应的所有三级
菜单的所有数据,以此类推……这样,用什么就取什么、用多少就取 多少,就不会有数据的冗余和浪费,减少了数据下载总量,而且更新
页面时不用重载全部
内容,只更新需要更新的那部分即可,相对于
后台处理并重载的方式缩短了
用户等待时间,也把对资源的浪费降到最低。 3.
快速的
用户与
用户间的交流响应 在众多人参与的交流讨论的场景下,最不爽的事情就是让
用户一遍又一遍刷新
页面以便知道是否有新的讨论出现。新的
回复应该以最快的速度
显示出来,而把
用户从分神的刷新中解脱出来,Ajax是最好的选择。 4.类似投票、yes/no等无关痛痒的场景 对于类似这样的场景中,如果提交过程需要达到40秒,很多的
用户就会直接忽略过去而不会参与,但是Ajax可以把时间控制在1秒之内,从而更多的
用户会加入进来。 5.对数据进行过滤和操纵相关数据的场景 对数据使用过滤器,按照时间排序,或者按照时间和
名称排序,开关过滤器等等。任何要求具备很高交互性数据操纵的场合都应该用JavaScript,而不是用一系列的服务器请求来完成。在每
次数据更新后,再对其进行查找和处理需要耗费较多的时间,而Ajax可以加速这个过程。 6.普通的文本输入
提示和
自动完成的场景 在文本框等输入表单中给予输入
提示,或者
自动完成,可以有效的改善
用户体验,尤其是那些
自动完成的数据可能来自于服务器端的场合,Ajax是很好的选择。 Ajax不适用场景 1.部分简单的表单 虽然表单提交可以从Ajax
获取最大的益处,但一个简单的
评论表单极少能从Ajax得到什么明显的改善。而一些较少用到的表单提交,Ajax则帮不上什么忙。 2.
搜索 有些使用了Ajax的
搜索引擎如Start.com和Live.com不允许使用浏览器的后退按钮来查看前一次
搜索的结果,这对已经养成
搜索习惯的
用户来说是不可原谅的。 现在Dojo通过iframe来
解决这个问题。 3.基本的导航 使用Ajax来做
站点内的导航是一个坏主意,为什么不把时间放在让系统程序作的更好上呢? 4.替换大量的文本 使用Ajax可以实现
页面的局部刷新,但是如果
页面的每个部分都改变了,为什么不重新做一次服务器请求呢? 5.对呈现的操纵 Ajax看起来像是一个纯粹的UI技术,但事实上它不是。它实际上是一个数据同步、操纵和传输的技术。对于可维护的干净的web应用,不使用Ajax来控制
页面呈现是一个不错的主意。JavaScript可以很简单的处理XHMTL/HTML/DOM,使用CSS规则就可以很好的表达数据
显示。 存在的问题 1.用JavaScript作的Ajax引擎,JavaScript的兼容性和DeBug都是让人头痛的事; 2.Ajax的无刷新重载,由于
页面的变化没有刷新重载那么明显,所以容易给
用户带来困扰?D?D
用户不太清楚现在的数据是新的还是已经更新过的;现有的
解决有:在相关位置
提示、数据更新的区域设计得比较明显、数据更新后给
用户提示等; 3.中间过程不能被bookmark。
解决方法:GoogleMaps通过在
页面上提供一个”link to this page”的办法来
解决。另外,还可以通过url
链接中加无效的?^
标记来
解决,但还未验证。 我觉得ibm开发者论坛中有个老大不记得什么名字了说的不错 跟j2ee的现有成熟表现层框架结合使用是比较好的一个选择。因需而用不会给自己断掉很多后路。一味的尝试或许就有苦果等待、诱惑、刺激、引导你失去理智。