2011-06-12 95 views
1

在我的网页(例如Link1:http://localhost:8086/MyStrutsApp/login.do)中有几个链接。当用户点击其中一个链接时,他会被带到另一个页面(例如link2:http://localhost:8086/MyStrutsApp/AddBook.jsp)以填充html表单。在同一页面上显示页面数据而不转发给其他页面

现在我想实现的是,当任何用户点击链接时,该HTML表单(Link2)显示在同一页面上(即Link1)。

我不知道如何做到这一点。

+0

为什么要这样做?一个页面,其中两个不同的页面具有不同的URL,更容易被人们理解,也是谷歌。 Thinka回合此页面,例如,stackoverflow.com,以及不同的页面如何具有不同的URL。 – vidstige 2011-06-12 10:23:22

+0

@vistige:但是我们在这里也有“添加评论”,它可以让我们在不离开页面的情况下添加评论,而且我们可以添加一个答案而不必进入新页面。 – 2011-06-26 21:45:10

回答

2

的AJAX的方式来实现这一目标是:

  • 你有你的原始页面上的DIV将被替换(即,包含的内容才有意义在原来的背景下或完全空)
  • 您的Link2 servlet仅生成上述DIV的内容(而不是该页面的内容)
  • 您使用一小部分Javascript进行AJAX调用并填充响应的DIV。

如果你想使用Dojo的HTML页面看起来像这样:

<!-- main content --> 
<div id="leftpanel"> 
    <h3>This content will be replaced</h3> 
    You can <a href="#" onClick="updateFromURL('/MyStrutsApp/AddBook.jsp)">add a book</a> 
</div> 

的JavaScript代码是这样的:

<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js" type="text/javascript"></script> 
<script type="text/javascript"> 
function display_wait(s) { 
    var mainPanel=dojo.byId("leftpanel"); 
    mainPanel.innerHTML='<div class="waitingmsg">'+s+'</div>'; 
} 

function updateFromURL(url) { 
    display_wait("loading content"); 
    dojo.xhrGet({url:url, 
       load:function(result) { 
       dojo.byId('leftpanel').innerHTML=result; 
      }}); 
} 
</script> 

(正如贝尼特斯所说,你可以使用相同的技术在对话框中显示新零件)

+0

如果你可以看看这个[链接](http://pastebin.com/CHGVS81r)和[链接](http://pastebin.com/0QxbLhrU)我使用了urs脚本,但是当我点击'add一本书我想(这个内容将被替换)文本被替换为form2.html数据,即它的html格式,但它没有发生... – RanRag 2011-06-12 12:03:37

+0

plz帮助其实是一个noob ...在JavaScript ..... – RanRag 2011-06-12 12:06:38

+0

它适用于我 - 您需要通过HTTP服务器加载HTML文件,但是,如果您只是将浏览器指向文件URL,则不起作用。 (你可以使用类似“python -m SimpleHTTPServer”来简单地从当前目录中提供文件,如果你只是想尝试一下) – 2011-06-12 13:32:44

0

要在另一个页面中显示一个页面,请使用iframe。请参阅iframe docs

,使外层页面上的链接加载它的目标页面进入iframe,给iframe一个name属性,并给出了链接匹配target属性。

相关问题