2009-08-19 67 views
2

我有一個使用DNN(DotNetNuke)作爲內容管理系統的網站。我正在使用另一個網站進行活動註冊。我給他們發了我的模板;其中顯示了基礎知識,其中包括一個包含許多不同項目的懸停菜單。如何從其他網站包含HTML內容?我可以訪問這兩個網站

問題是 - 當我使用DNN更新我的網站上的菜單時,我需要使用我的模板在網站上反映它,而無需向他們發送新文件。任何人都有如何解決這個問題的意見?

我不想發送事件提供程序的所有DNN DLL以及我的數據庫登錄信息以呈現菜單。

我在我的網站上創建了一個類似於'menu.aspx'的頁面 - 這會生成HTML格式的菜單,但它具有標籤,我想在將其提供給它們之前將其刪除。

這是最好的方法是什麼?我是否需要使用XMLHttp編寫自定義服務器控件?我可以在Javascript中完成此操作嗎?

任何意見大加讚賞。

謝謝!

+0

Double post:http://stackoverflow.com/questions/1298411/how-to-include-html-contents-from-another-site-i-have-access-to-both-sites – 2009-08-19 08:05:05

回答

0

編輯:正如Vincent E.指出的那樣,只有當它們位於同一個域時纔會起作用 - 我的不好。

如果您不願意或無法使用框架,那麼我會在您的DNN服務器上設置一個呈現菜單的ashx(如果您已將其更好地放在用戶控件中,則可以將其安裝和Render它直接到輸出流),然後只是從你的事件頁面的Ajax調用,並直接插入到DOM。

這裏的事物的活動頁面端的快速和哈克基於jQuery的例子:

<script type="text/javascript"> 

function RenderMenu(data) 
{ 
    $('#Menu').html(data); 
} 

$(document).ready(function() { 
     $.ajax({ 
      type : 'GET', 
      url : 'http://localhost/AjaxHandlers/Menu.ashx', 
      data : '', 
      success : RenderMenu, 
     }); 
    }); 

</script> 

,你希望你的菜單中你會想用ID在頁面上「菜單」的空div坐,但除此之外,你很好去。

如果無論出於何種原因,您不能單獨獲取菜單HTML,那麼您需要在RenderMenu中執行一些文本處理,但它仍然可以使用。

+0

這不會如果兩個網站由於相同原產地政策而不在同一個域上,則工作。 – Wookai 2009-08-19 08:51:09

+0

Gah。好點子。編輯承認我的錯誤。 – Pike65 2009-08-19 08:58:31

0

我不是網絡專家,所以不要拍我。

難道你不能只把他們的註冊表格放入DNN的iFrame中嗎?

2

如果兩個站點都託管在同一個域中(例如site1.domain.com和site2.domain.com),則可以使用JavaScript和XmlHttpRequest將代碼從一個站點插入另一個站點。否則,Same Origin Policy將阻止您使用AJAX。

如果他們不在同一個域,但您可以訪問他們的網站上的頁面,你可以簡單地包含有從您的網站JS腳本:

<script type="text/javascript" src="http://yoursite.com/code.js"></script> 

在JS,只是document.write()什麼你想在頁面上。這樣,您可以輕鬆更改其網站上的頁面內容,而無需向他們發送新文件。

最後,您還可以在其網站上使用iframe,指向您的網頁。