2011-08-30 58 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

相關問題