日期:2014-03-17 浏览次数:21143 次
Ajax理念的出现,揭开了无刷新更新页面时代的尾声,并有代替传统web开发中采用form(表单)递交方式更新web页面的趋势,可以算是一个里程碑。但Ajax都不是适用于所有地方的,它的适用范围是由它的特性所决定的。通过我这几天对Ajax学习后的了解觉得它的特性次要有2点:
1、按需取数据。页面不读取无用的冗余数据,而是在用户操作过程中的某项交互需求某部分数据时才会向服务器发送请求。
2、无刷新更新页面。客户端利用XMLHTTP发送请求得到服务端应对数据,在不重新载入整个页面的情况下用JavaScript操作DOM最终更新页面。
3、预读功用也可以通过Ajax实现,但并不是Ajax的优势所在,它的次要优势还是在交互方面。
Ajax带来的正面效果:
1、减轻服务器的负担。由于Ajax的基本理念是“按需取数据”,所以最大可能在减少了冗余请求和响影对服务器形成的负担。
2、减少用户实际和心思等待时间。
首先,“按需取数据”的模式减少了数据的实际读取量,打个很笼统的比方,如果说重载的方式是从一个起点回到原点再到另一个起点的话,那么Ajax就是以一个起点为基点到达另一个起点;
其次,即便要读取比较大的数据,也不用像RELOAD一样出现白屏的情况,由于Ajax是用XMLHTTP发送请求得到服务端应对数据,在不重新载入整个页面的情况下用Javascript操作DOM最终更新页面的,所以在读取数据的过程中,用户所面对的也不是白屏,而是原来的页面形状(或者可以加一个LOADING的提示框让用户了解数据读取的形状),只要当接收到全部数据后才更新相应部分的内容,而这种更新也是霎时的,用户几乎感觉不到。总之用户是很敏感的,他们能感觉到你对他们的体贴,虽然不太可能立竿见影的效果,但会在用户的心中一点一滴的积累他们对网站的依赖。
举个使用的例子,庆祥提的一个建议很适合Ajax,是关于级联菜单方面的Ajax使用。
我们以前的对级联菜单的处理是这样的:
为了避免每次对菜单的操作惹起的重载页面,不采用每次调用后台的方式,而是一次性将级联菜单的所无数据全部读取出来并写入数组,然后依据用户的操作用JavaScript来控制它的子集项目的呈现,这样虽然处理了操作呼应速度、不重载页面以及避免向服务器频繁发送请求的问题,但是如果用户不对菜单进行操作或只对菜单中的一部分进行操作的话,那读取的数据中的一部分就会成为冗余数据而浪费用户的资源,特别是在菜单结构复杂、数据量大的情况下(菜单有很多级、每一级菜又有上百个项目,比如庆祥正在UE之中的读书频道),这种弊端就更为突出。
如果在此案中使用Ajax后,结果就会有所改观:
在初始化页面时我们只读出它的第一级的所无数据并显示,在用户操作一级菜单其中一项时,会通过Ajax向后台请求当前一级项目所属的二级子菜单的所无数据,如果再继续请求曾经呈现的二级菜单中的一项时,再向后面请求所操作二级菜单项对应的所有三级菜单的所无数据,以此类推……这样,用什么就取什么、用多少就取多少,就不会无数据的冗余和浪费,减少了数据下载总量,而且更新页面时不用重载全部内容,只更新需求更新的那部分即可,绝对于后台处理并重载的方式缩短了用户等待时间,也把对资源的浪费降到最低。