静态页面onload方法增加Ajax后对变量的影响
这几天一直在研究treeTable(是一款jQuery的插件),这款插件将普通的表,变成一个可以收缩的treeTable。这种表格主要应用于权限处理,可以使用户一目了然地看见各个资源的继承关系。 上图就是一个简单的treeTable图例。 但是该表是一个静态的表,表格里的内容是一次性从服务器上获取下来,然后插件根据tr的id以及class构建table的层级关系。我的tr以及td的html代码是程序动态生成的,然后输出在页面上,页面加载完成后,利用jQuery给表格的每一列增加一个click事件,用来鼠标点击变换图片。 但是有的时候表格会很大,一个分支下有很多子分支,这时加载表格就需要耗费一些时间了,而子目录的动态加载能很方便的缓解这种压力。因为treeTable插件不支持Ajax,所以自己动手扩展Ajax功能,页面只加载第一级的分支,通过Ajax动态加载子分支。思路确定以后俺就开始“起立咔嚓”地整代码,1小时后treeTable改造完成,鼠标点击分支,动态去数据库读取子分支的数据。心里还挺美的,但是突然发现一个问题: 我页面上的click事件出现问题了,新加载上去的子分支,点击图片不会发生变换。查看页面js方法,发现click的方法是在页面加载完成后进行设置的,而这个时候动态的子分支还没有出现,所以必然导致新的分支没有被加载click方法。而且还有另一个诡异的现象:目前【内部论坛】以及【国内新闻】是动态加载上去的,这个时候点击【图片库】发现【内部论坛】的图片发生了改变,而【内部论坛】所在的位置又恰恰是刚才【图片库】所在的位置。产生这种现象的原因是:【内部论坛】在table中的位置以前是【图片库】的,所以【图片库】的click被触发后,该方法会去改变第3行(也就是以前【图片库】所在行)的图片。 解决方案:click方法直接写入每个td中(因为td是通过后台程序加载的,所以很容易增加click方法),这样新加载的分支也有click方法了。 产生这种问题的原因:在写加载click的方法时,没有考虑到动态的情况。以java代码来考虑客户端,客户端onload方式只在页面加载时才执行。页面加载完成后不再执行,以后再使用该方法时:需要注意变量即方法的调用及使用。
相关文档:
AJAX 流行之后,总想好好学习一下。但是众多的框架实在难以选择。说明一下 ASP.NET AJAX 并不包括在 AJAX 框架之中。
刚开始学了 JQuqery, 众多的 $get(),...等等符号早已把我搞晕了。暂时就放弃了。
后来学习 ASP.NET AJAX ,在微软的领导下,逐渐由服务器端转向客户端编程。 激起我客户端编程的兴趣,
才想起学 ......
[AJAX介绍]
Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。Web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。
异步JavaScript和XML(AJAX)不是什么新技术,而是使用几种现有技术——包 ......
首先都是使用VS.Net2005创建一个 ASP.Net AJAX-Enabled Web Application
1、使用AJAX直接调用后台方法:
后台代码:
namespace AJAX1
{
public partial class _Default : System.Web.UI.Page
{
// 需要标识为WebMethod ......
XMLHTTPRequest是依附于浏览器的一个组件,浏览器不同针对的组件名称也不同。XMLHTTPRequest是Firefox中组件的名称,在IE中叫XMLHTTP。“XMLHTTP”有两个优点:局部刷新、异步读取。
Ajax的实现步骤:
1、 创建异步对象:
在IE中:var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
......
http://drupal.org/project/ajax_comments
AJAX Comments
View
CVS instructions
Modules · Content display
neochief - December 18, 2008 - 12:44
One of the most wanted Drupal modules :)
Module is now depends on Comments bonus API!
Features in 6.x:
Provides ajax comments to drupal sites. Feature ......