2011-06-27 85 views
1

我們想實現一個創新的UI。我們正在做的事情如下:

  • 當用戶點擊一個菜單項鍊接時,$ .get(url)被調用,我們將取出在url中引用的頁面的HTML內容。
  • 然後,我們將該內容填充到輸出格中,然後在填充之前刪除該輸出格的任何內容。

這是我們實際正在做的事情的削減版本,但它的目的是說明我目前面臨的問題。

實際上,當使用$ .get(url)包含純HTML的頁面時,我沒有任何問題。但是,如果使用$ .get(url)獲取的頁面包含Ext.NET代碼,那麼我沒有返回任何東西。

實際發生的事情是,Ext.NET代碼本身調用其他腳本並在DOM中插入元素。這導致了一個問題,因爲我的代碼執行到之前 Ext.NET有時間插入我試圖訪問的內容。

因此,一個天真的嘗試來解決這個問題將是等到Ext.NET完成填充頁面,然後將代碼執行返回到回調函數。問題是我該如何做到這一點?有沒有更好的方法來實現我想要做的事情,即確保$ .get(url)完全運行它的過程,以便我的輸出div正確填充?

我想我可以放棄使用iFrame的路線,但我想避免這種情況,如果可能的話,因爲這會增加複雜的界面。

回答

0

您需要使用

async: false, 

所以做這樣的電話..

$.ajax({ 
    type: "GET", // Don't need to declare this.. 
    url: 'url.html', 
    async: false, 
    success: function(data) { 
    // Do something with the returned data.. 
    } 
}); 
+0

@ david1dMcLean:不幸的是,這不起作用,即我得到相同的結果。 – DavidS

+0

我還沒有使用EXT.net呢..但有沒有辦法讓它等到dom被加載?不知道這是如何工作的,因爲你正在調用它的頁面已經被加載.. *思考*確定如何在外部頁面加載後將變量設置爲true ...外部頁面上的js加載但不直到變量的值被設置爲true。這意味着一切都被加載..你可能需要通過自定義事件實現 - > http://www.truerwords.net/articles/web-tech/custom_events.html - 是舊的,但我相信它仍然有效(沒有嘗試過新的IE或FF思想)。 –

+0

@ david1dMcLean:謝謝你的輸入。我也有這個計劃,但我認爲我需要走下iframe的路線,而且我已經遇到了可怕的事情。 – DavidS

1

提取由渲染Ext.NET組件生成的HTML應該是可能的,但我想你」會錯過另一個重要的方面......附加到每個組件的DOM事件。

您需要的是在原有效載荷PLUS中發送的任何html以及用於生成頁面的JavaScript,並且您需要在父頁面上執行該JavaScript。只需要引入html就不會給你帶來太大的幫助。

如果您在父頁面上運行Ext.NET,則可能需要使用任何Container類型上提供的功能進行調查。其基本功能是獲取遠程頁面/ html +腳本並執行該腳本。

以下示例演示。

<ext:Panel runat="server" Title="Example"> 
    <AutoLoad Url="example.html" /> 
</ext:Panel> 

希望這有助於。

+0

感謝Geoffroy,但現在我已經走下了iframe路線,現在這種工作方式,但我會記住你的建議。我不會將它標記爲答案,因爲我沒有嘗試過,但我會加倍努力,因爲它可能是一個值得探索的途徑。 – DavidS

+0

其實這對我想要做的事沒有幫助。 – DavidS

相關問題