2011-08-30 71 views
1

在我的网站中,我有jquery函数load()的多次调用。jquery函数load()无法正确加载dojo内容

我们可以sumarize这样的:

1)在我的索引页面调用这个$('#mainFrame').load('/antoherPage.jsp');
我在我的索引页面的头部插入此代码:

<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dijit/themes/claro/claro.css"/><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js" djConfig="parseOnLoad: true,locale: 'en'"></scipt> 

2)在我的另一页,它调用此$('#main').load('/Form.jsp');

3)在 '​​形式',我有一些字段从的dijit:的dijit.form.ValidationTextBox,...

<input dojoType='dijit.form.ValidationTextBox'></input> 

在我的索引页,我有这样的:

基本上,如果我加载页面Form.jsp,everyhting正确显示。但是,当我加载我的索引页时,表单中的所有内容都没有正确显示。

我想知道是否需要在表单页面或其他页面中写入一些特殊代码。也许dojo/dijit不接受多个加载调用?

非常感谢您

蝙蝠

+0

当你混合使用jquery和dojo时,首先想到的是'冲突',并且为此有'noConflict' http://api.jquery.com/jQuery.noConflict/可能会有所帮助 – Rafay

回答

1

后您阿贾克斯加载一个页面,你需要调用dojo.parser.parse()。 Dojo不知道你正在通过ajax加载另一个页面,因此解析器不知道在标记中查看dijit小部件的新内容。您也需要dojo.require('dojo.parser')

编辑:看jquery的负载文档,更全功能的例子是:

$('#main').load('/Form.jsp', function() { 
//make sure we have the dojo.parser component pulled in, although it should probably be done in <head> 
dojo.require('dojo.parser'); 
dojo.parser.parse(); 
}); 

一如既往,dojo.parser组分应当先于AJAX调用的执行加载

+0

也可以看看Alex Cheng的答案是类似的问题(http://stackoverflow.com/questions/7214794/reload-dojo-widgets-after-ajax-request/7226096#7226096) – BuffaloBuffalo

+0

jquery.load是否从HEAD引入并执行脚本引用,还是只是替换了BODY文本?如果是后者,你还必须对这些做些什么,比如额外的dojo.require调用。 – peller

+0

我不是一个jQuery的家伙,但从文档(http://api.jquery.com/load/)看起来它只是交换来自​​给定URL的html。 – BuffaloBuffalo