有三个网页,a1.jsp,a2.jsp和a3.jsp,a1.jsp是主页面,里面用<iframe>标签把a2.jsp引进来,在a2.jsp页面里面有个form,提交后交给a3.jsp处理后然后重定向到a1.jsp,在a1.jsp里面也有个form。
现在的问题是:当我在a1页面里面包含的a2页面的表单内填写好数据提交给a3,然后a3返回到a1的时候,如何让a1页面刷新?
我在网上找了很久都没有找到合适的方法,用了很多js控制的刷新父窗口的方法,但是都没有用,基本上都是只能iframe里面的内容,不能刷新a1的整个页面!
请各位大侠帮帮忙!急!!!

解决方案 »

  1.   

    笨方法:
    <%response.setHeader("Refresh","3");%>  
    这样的意思是整个页面每隔3秒自动刷新一下页面
    建议最好用ajax,可以事先局部刷新
      

  2.   

    下面以三个页面分别命名为frame.html、top.html、bottom.html为例来具体说明如何做。frame.html 由上(top.html)下(bottom.html)两个页面组成,代码如下: 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
    <HTML> 
    <HEAD> 
    <TITLE> frame </TITLE> 
    </HEAD> 
    <frameset rows="50%,50%"> 
    <frame name=top src="top.html"> 
    <frame name=bottom src="bottom.html"> 
    </frameset> 
    </HTML>现在假设top.html (即上面的页面) 有七个button来实现对bottom.html (即下面的页面) 的刷新,可以用以下七种语句,哪个好用自己看着办了。语句1. window.parent.frames[1].location.reload(); 
    语句2. window.parent.frames.bottom.location.reload(); 
    语句3. window.parent.frames["bottom"].location.reload(); 
    语句4. window.parent.frames.item(1).location.reload(); 
    语句5. window.parent.frames.item('bottom').location.reload(); 
    语句6. window.parent.bottom.location.reload(); 
    语句7. window.parent['bottom'].location.reload();top.html 页面的代码如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
    <HTML> 
    <HEAD> 
    <TITLE> top.html </TITLE> 
    </HEAD> 
    <BODY> 
    <input type=button value="刷新1" onclick="window.parent.frames[1].location.reload()"><br> 
    <input type=button value="刷新2" onclick="window.parent.frames.bottom.location.reload()"><br> 
    <input type=button value="刷新3" onclick="window.parent.frames['bottom'].location.reload()"><br> 
    <input type=button value="刷新4" onclick="window.parent.frames.item(1).location.reload()"><br> 
    <input type=button value="刷新5" onclick="window.parent.frames.item('bottom').location.reload()"><br> 
    <input type=button value="刷新6" onclick="window.parent.bottom.location.reload()"><br> 
    <input type=button value="刷新7" onclick="window.parent['bottom'].location.reload()"><br> 
    </BODY> 
    </HTML> 
    下面是bottom.html页面源代码,为了证明下方页面的确被刷新了,在装载完页面弹出一个对话框。bottom.html 页面的代码如下: 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
    <HTML> 
    <HEAD> 
    <TITLE> bottom.html </TITLE> 
    </HEAD> 
    <BODY onload="alert('我被加载了!')"> 
    <h1>This is the content in bottom.html.</h1> 
    </BODY> 
    </HTML>
    解释一下: 
    1.window指代的是当前页面,例如对于此例它指的是top.html页面。 
    2.parent指的是当前页面的父页面,也就是包含它的框架页面。例如对于此例它指的是framedemo.html。 
    3.frames是window对象,是一个数组。代表着该框架内所有子页面。 
    4.item是方法。返回数组里面的元素。 
    5.如果子页面也是个框架页面,里面还是其它的子页面,那么上面的有些方法可能不行。附: 
    Javascript刷新页面的几种方法: 
    1 history.go(0) 
    2 location.reload() 
    3 location=location 
    4 location.assign(location) 
    5 document.execCommand('Refresh') 
    6 window.navigate(location) 
    7 location.replace(location) 
    8 document.URL=location.href
    自动刷新页面的方法: 
    1.页面自动刷新:把如下代码加入<head>区域中 
    <meta http-equiv="refresh" content="20"> 
    其中20指每隔20秒刷新一次页面.2.页面自动跳转:把如下代码加入<head>区域中 
    <meta http-equiv="refresh" content="20;url=http://www.yidi.net"> 
    其中20指隔20秒后跳转到http://www.yidi.net页面3.页面自动刷新js版 
    <script language="JavaScript"> 
    function myrefresh() 

    window.location.reload(); 

    setTimeout('myrefresh()',1000); //指定1秒刷新一次 
    </script>希望这个对你有用     我刚找的
      

  3.   

    辛苦了
    这些方法都不行,你给的例子不是我说的那种样子!
    a1页面是有很多数据要录入的一个页面,如果设为相隔一段时间自动刷新可能会让用户刚刚录入的数据弄丢了……我试过在a3页面里面用esponse.sendRedirect(a1.jsp),也试过了用/response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);response.setHeader("Location","a1.jsp");
    都不能实现;
    <meta http-equiv="refresh" content="1;url=http://localhost:8080/TestCollection/a1.jsp"> 的方法好像也不行
    不知道各位大侠还有其他的方法没?小弟急用!!!
      

  4.   

    我的建议:1、在a1这个页面理写一个javascript函数,假定为refreshA1这个函数可以接受参数来更新自己页面上的Form
    2、在a2提交后,a3处理,返回的页面不要是a1,最好再写一个简单页面,如a4,
    3、a4的功能非常简单,就是在onload方法里,调用a1的refreshA1方法,把a3处理的结果传过去(假定你a3处理的结果是要影响a1的)
      

  5.   

    我的建议:
    可以设一个变量,从a3.jsp传像a1.jsp。当a1.jsp取出的变量的值不为null的时候,把a1.jsp的form提交以下,就能起到刷新数据的作用了
      

  6.   

    当我在a1页面里面包含的a2页面的表单内填写好数据提交给a3,然后a3返回到a1的时候,如何让a1页面刷新?我怎么看不明白?a3 返回到a1,这时候a1不是重新加载了吗?还需要刷新干什么?
      

  7.   

    问题是当a3返回到a1的时候并没有自动重新加载!
    可能是因为使用了<iframe>的原因吧!!!
    4楼、5楼的方法好像可以用