ajax页面加载-Dojo

时间:2010-11-14 03:54:19

标签: ajax dojo

嗨我有一个页面,左侧有导航菜单,任何链接 单击此菜单,将Ajax get调用发送到服务器 右侧使用新页面进行更新。

我目前这样做是通过创建2列,左列 包含导航链接,右边的col包含一个名为the的div 具有dojox.layout.ContentPane.Now的dojotype的内容 从服务器收到数据,我改变了这样的内容

dijit.byId("thecontent").setContent=data

现在,当我点击导航链接时,右侧会显示 正确显示(此页面有dijits和一些脚本) 处理onclick事件)。但是firebug返回错误说

"Tried to register widget with id==thecontent but that id is already registered"

我的主要道场包括如下: -

<script type="text/javascript" src="http://o.aolcdn.com/dojo/1.5/dojo/dojo.xd.js"djConfig="parseOnLoad:false"></script>

我在函数dojo.addOnLoad中执行dojo.parser.parse(),如下所示: -

 dojo.addOnLoad(function(){
     dojo.require("dijit.form.Button");
     dojo.require("dijit.form.Textarea");
     dojo.require("dijit.form.ValidationTextBox");
     dojo.require("dojox.layout.ContentPane");
     dojo.require("dijit.Editor");
   dojo.addOnLoad(function(){
        dojo.parser.parse();
        sendgetrequest();//this initiates the xhrget request
        dojo.removeClass(dojo.byId("doc3"),"hiddendiv");
        }

);
    })

我也无法在这个新加载的页面中运行任何脚本。没有onclick事件正在运行,只显示dijit小部件......

1 个答案:

答案 0 :(得分:1)

正如肯已经说过的那样,错误意味着你正在创建一个已存在id的dijit。我的猜测是你在右侧面板中加载AJAX内容而不先破坏旧的右侧面板。

在加载新内容之前,尝试在右侧面板中的主dijit容器上调用destroyRecursive。另外,如果你不需要设置dijit的id,你可能会丢弃id(但这会留下一个内存空洞,因为旧的dijit不会被破坏)。