我有一个使用DNN(DotNetNuke)作为内容管理系统的网站。我正在使用其他网站进行活动注册。我给他们发了我的模板;它显示了基础知识,包括一个包含许多不同项目的悬停菜单。
问题是 - 当我使用DNN更新我网站上的菜单时,我需要使用我的模板在网站上反映它 - 我不必向他们发送新文件。任何人都有关于如何处理这个问题的建议吗?
我不想发送事件提供程序的所有DNN DLL以及我的数据库登录信息以呈现菜单。
我在我的网站上创建了一个类似'menu.aspx'的页面 - 这会生成HTML格式的菜单,但是它有像我之前要删除的标签,然后再将它们提供给它们。
最佳方法是什么?我是否需要使用XMLHttp编写自定义服务器控件?我可以在Javascript中完成这个吗?
任何建议都非常感谢。
谢谢!
答案 0 :(得分: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,指向您的网页。
答案 1 :(得分:0)
我不是网络专家,所以不要开枪。
难道你不能只将他们的注册表格放入DNN的iFrame中吗?
答案 2 :(得分:0)
如果你不愿意或不能使用框架,那么我会在你的DNN服务器上设置一个ashx来渲染菜单(如果你在用户控件中得到它更好,因为你可以实现它和Render
直接到输出流),然后从事件页面调用Ajax,直接将其插入DOM。
这是一个基于jquery的快速和hacky事件页面结尾的例子:
<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>
您需要一个空白的div,其中包含您希望菜单所在页面上的ID“菜单”,但除此之外您还可以去。
如果出于某种原因无法以孤立的方式获取菜单HTML,那么您需要在RenderMenu
中进行一些文本处理,但它仍然可以。