2009-08-19 11 views
2

Ich habe eine Website, die DNN (DotNetNuke) als Content-Management-System verwendet. Ich nutze eine andere Seite für meine Event-Registrierungen. Ich habe ihnen meine Vorlage geschickt; Das zeigt die Grundlagen einschließlich eines Hover-Menüs mit vielen verschiedenen Elementen.Wie können HTML-Inhalte von einer anderen Website eingebunden werden? Ich habe Zugriff auf beide Seiten

Problem ist - wie ich das Menü auf meiner Website mit DNN aktualisieren, ich brauche es auf der Website mit meiner Vorlage reflektiert werden - ohne dass ich ihnen eine neue Datei senden müssen. Hat jemand Vorschläge, wie man das angehen kann?

Ich möchte nicht den Ereignisanbieter alle DNN DLLs sowie meine Datenbank Anmeldeinformationen senden, um das Menü zu rendern.

Ich habe eine Seite auf meiner Website erstellt, die etwas wie "menu.aspx" ist - dies erzeugt das Menü im HTML-Format, aber es hat Tags wie darin, die ich entfernen möchte, bevor es ihnen serviert wird.

Was ist der beste Ansatz dafür? Muss ich ein benutzerdefiniertes Serversteuerelement mit XMLHttp schreiben? Kann ich das in Javascript erreichen?

Jeder Rat sehr geschätzt.

Vielen Dank!

+0

Doppelter Beitrag: http://stackoverflow.com/questions/1298411/how-to-include-html-contents-from-another-site-i-have-access-to-both-sites –

Antwort

0

EDIT: Wie Vincent E. darauf hingewiesen hat, wird dies nur funktionieren, wenn sie auf der gleichen Domain sind - meine schlechte.

Wenn Sie nicht wollen oder nicht können, Frames zu verwenden, dann würde ich ein Ashx auf Ihrem DNN-Server einrichten, der das Menü (wenn Sie es in einem Benutzer Steuerelement haben umso besser, wie Sie es einfach installieren können und Render direkt in den Ausgabestream) und dann einfach einen Ajax-Aufruf von Ihrer Ereignisseite an und fügen Sie ihn direkt in das DOM ein.

Hier ist ein schnelles und Hacky jquery-basiertes Beispiel des Ereignisse Seite Endes der Dinge:

<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> 

Sie werden mit der ‚Menü‘ ID ein leeres div wollen auf der Seite, wo Sie Ihr Menü mögen Setz dich, aber ansonsten bist du gut zu gehen.

Wenn Sie aus irgendeinem Grund das Menü HTML nicht isoliert erhalten können, müssen Sie eine Textverarbeitung in RenderMenu durchführen, aber es ist immer noch machbar.

+0

Dies wird nicht funktionieren, wenn sich die beiden Websites aufgrund der gleichen Ursprungsrichtlinie nicht in derselben Domäne befinden. – Wookai

+0

Gah. Guter Punkt. Redigiert, um meinen Fehler zuzugeben. – Pike65

0

Ich bin kein Web-Experte, also erschießt mich nicht.

Kannst du nicht einfach ihr Registrierungsformular in einen iFrame in DNN einfügen?

2

Wenn beide Websites in derselben Domäne gehostet werden (z. B. site1.domain.com und site2.domain.com), können Sie JavaScript und XmlHttpRequest verwenden, um Code von einer Site zur anderen einzufügen. Andernfalls verhindert die Same Origin Policy Sie AJAX zu verwenden.

Wenn sie nicht auf der gleichen Domäne sind, aber Sie haben Zugriff auf die Seite auf ihrer Website, können Sie einfach schließen ein JS-Skript von Ihrer Website:

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

Im JS, einfach document.write() was Sie wollen auf der Seite. Auf diese Weise können Sie den Inhalt der Seite auf ihrer Website problemlos ändern, ohne eine neue Datei senden zu müssen.

Schließlich können Sie auch einen iframe auf ihrer Website verwenden und auf eine Seite auf Ihrer verweisen.

Verwandte Themen