如何在单击链接时将另一个JSP页面注入<div>?</div>

时间:2012-09-09 00:20:51

标签: java javascript jsp

我在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">"; 

没有一种方法可行。请建议我应该如何

4 个答案:

答案 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对象包含的响应数据。