我在JSP页面中有两个不同的部门。一个包含链接菜单,单击时div2(id-content)相应地加载不同的页面。我正在做类似的事情 -
<div id="menu">
<ul class="navbar">
<li><a name="login" href="Login.jsp" onclick="changeContent()">Login</a>
</li></div>
在脚本中我有一些东西 -
<script language="JavaScript">
function changeContent() {
document.getElementById('content').load('Login.jsp');
}
</script>
我也试过了 -
document.getElementById('content').innerHTML=
"<jsp:include page="Login.jsp">";
没有一种方法可行。请建议我应该如何
答案 0 :(得分:4)
尝试jquery ..
function changeContent() {
$('#content').load('Login.jsp');
}
答案 1 :(得分:1)
解决方案是使用Ajax,它将异步检索可以使用innerHTML方法粘贴的页面内容。请参阅my answer以了解Ajax调用如何工作的类似问题以及一些介绍性链接。
至于为什么你的答案中的例子不起作用,在第一种情况下,Element对象上没有load()方法(除非你自己定义了一个并且没有显示它)。在第二个例子中,正如其中一个问题评论所说,可能会导致javascript中出现语法错误。
作为一个FYI,当网页中的某些javascript存在语法错误时,正在解析的当前表达式以及&lt; script&gt;&lt; / script&gt;的其余部分块将被忽略。由于这是在函数声明中,因此永远不会定义该函数。 例如,包含页面中的嵌入式引用将结束innerHTML赋值的字符串。然后,javascript解析器将尝试解析HTML的其余部分,从而导致语法错误,因为HTML将无效javascript。
答案 2 :(得分:0)
我们使用jquery。向锚元素添加单击事件处理程序。在点击处理程序中调用$('#content').load(your_url);
。您可能想要使用load(url, function() { ...})
版本。更多信息http://api.jquery.com/load/
答案 3 :(得分:0)
您的初始页面是从服务器下来的。它由浏览器显示。当您单击浏览器中的链接(或按钮)时,您希望用新HTML填充第二个div。对于AJAX请求,这是一个完美的工作。浏览器中的AJAX对象是将POST(或其他)字符串发送到服务器。然后Ajax对象从服务器接收HTML响应。然后,您可以在任何地方显示AJAX对象包含的响应数据。