现有一个iframe页面quickEnter.jsp,其action为/flgn/quickEnter.do
如果在action中验证成功,则希望跳出iframe,显示一个全新的页面;
如果验证失败,则在原iframe页面中显示出错信息。
应该怎么做才可以达到这样的效果呢???使用的是struts。如果在页面的action中添加target=“_parent”,则出错的时候父窗口的内容就不显示了!
可是不加的话,成功跳转又会再出现父窗口的内容!!
到底应该怎么做啊,困惑中

解决方案 »

  1.   

    弹出新窗口是target=“_blank”,在当前窗口是target=“_self”
      

  2.   

    问题是我没办法判断是该用target="_blank"还是用target="_self"啊,验证是在action中进行的
      

  3.   

    使用javascript function,如果验证出错,就不要调用。//在iframe内
    function showNewPage() {
       parent.showIframeNewPage();
    }//在主页面内
    function showIframeNewPage() {
       location.href = "newPage.jsp"; //这里改成你验证成功的页面地址
    }
      

  4.   

    2 楼的办法更好。可以改成:使用javascript function,如果验证出错,就不要调用。//在iframe内
    function showNewPage() {
      window.parent.location.href = "newPage.jsp"; //这里改成你验证成功的页面地址 
      

  5.   

    使用js来判断并更改target的属性。比较好的实现方法是,lz的这个form的action用servlet来实现。
    servlet中处理响应,然后输出不同的内容。
    out.println("<script type=\"text/javascript\">");
    out.println("window.parent.OnCompleted(" + retVal + ",'" + errorMessage+ "');");
    out.println("</script>");
    //完全可以在不同的情况下,使用js处理不同的情况。
    在jsp页面中可以用下面这个处理servlet中的返回。
    function OnCompleted(errnum,errmessage){
           switch(errnum){
    case 0:
    break;
    case 101:
    alert('Fill blank');
    return;
    case 201:
    alert('Login failed');
    return;
    }
    window.location='<%=request.getContextPath()%>/admin/admin.jsp';
    }
    function check(){
    //省略
    //...
    }
    form中的内容
    <form id="form1" target="CheckLogin" name="form1" method="post" action="" onsubmit="return check();">
    //省略
    //...
    </form>
    关键还需要一个iframe来协助。
    <script type="text/javascript">
    document.write( '<iframe name="CheckLogin" style="display: none" src="<%=request.getContextPath()%>/ui/wait.htm"></iframe>' ) ;
    </script>
    LZ可以慢慢研究一下。
    上面给的例子中的内容取自验证登陆过程。
    大致过程是
    form-->iframe-->servlet-->JS:oncompleted()
      

  6.   

    2楼,5楼正解!!!非常感谢!
    6楼的方法好像麻烦了点,而且我项目用到的是struts,再另外写servlet好像有点怪,呵呵。不过还是多谢你提供的思路!
    之前陷入死胡同是因为我总是想着一步到位了~~没想到可以先转到同一个页面再判断该怎么跳转~