微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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小部件…

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐