首页 > 开发 > AJAX > 正文

完成了AJAX树附原理分析

2024-09-01 08:29:28
字体:
来源:转载
供稿:网友
首先要纠正一个上篇博文《Rails中的Ajax初体验》中的一个错误:上篇博文中,我说“要在Rails中使用Ajax,局部模板是必须的”,经实践检验,是错误的,特此更正。实践是检验真理的唯一标准,此言不虚。经过项目中真正通过RJS实现AJAX树,可知,通过使用insert_html、replace_html等辅助方法,可直接操作页面上的元素,无须使用局部模板。
整个的实现过程还是有点曲折:

之前使用的生成树结构的页面,是利用从服务器获取的所有数据,通过一系列javascript脚本函数,一次性地生成整个树结构目录。这种方式对付系统的功能菜单还游刃有余,但是要生成包含上千条数据的树结构时,客户端的浏览器需要十几秒钟才能把整个树结构建立起来、显示在页面上,这对于用户来说是不可忍受的——其实对于我们开发者来说,也是不可忍受的。那么一个可行的办法就是,利用AJAX技术,先显示树结构的第一级节点,当点击某个节点时,再从服务器获取该节点的子节点,显示出来。这样,每次与服务器交互的数据量不大,加快了页面响应。

一开始我打算利用RAILS中的AJAX机制,配合使用之前那个版本中的javascript函数。但是那个版本的思路,是基于从服务器获取的树结构数据,通过循环、递归,在服务器端生成好要在客户端页面执行的一系列javascript函数调用,以生成树结构。至此,还算是比较符合AJAX的思路,但是下一步就大相径庭了:旧版本的是将生成的那一大串javascript函数调用的字符串,一次性地完全返回给客户端页面,客户端页面在加载前,已经获得了这一大串字符串,只需简单地把它加载,就一次性的执行它、生成树结构了。这种方式,等于没有给AJAX留下插足的任何机会。

此路不通,于是我转而寻找网上别人做的AJAX树,试图将其移植过来,为我所用。之前就找到过一个.NET版的,用C#写的,还没仔细看过。于是打开VS2005,建好了ASPX工程,研究了一下这个.NET版的AJAX树。这个版本自带了一个ACCESS数据库,里面有一些演示数据。把IIS架起来后,运行得还真挺顺畅。这个AJAX树的功能做得还挺强,可以实现在页面上对树节点的添加、删除、编辑、拖拽移动操作。代码也比较清晰:一个htm页面和一个aspx页面,其中aspx页面中定义了一些服务器端函数,组织出相应的要返回给htm页面的html代码段。然而,要把这个移植过来也不容易,首先是对其生成html代码段的思路不熟悉,不好控制,另外一点,它是通过response.write返回所生成的html代码段,与RJS中直接指定页面元素进行控制的思路又不一样。

也是由于通过对以上两种方式的探索,使得我对做AJAX树的思路更加清晰的原因吧,我最终决定还是自己动手,完全自己做一个RAILS下的出来吧。尽管最终从核心内容到细节控制,总算是把这棵树给捣腾出来了,但中间遇到几个问题,有的不知道是否RAILS本身就不支持,还有的明明书上、别人都行得通,但我这就是不行。不知个中缘由,列在这里,若有人能够解答,还望不吝赐教!谢过先!
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表