父页面里是一个表格,当对表格某一行进行编辑的时候,点击对应的编辑按钮,就会弹出一个层,层里面是一个JSP,然后现在我对这个JSP里的信息进行修改,修改完之后,用AJAX传送到servlet里,然后进行数据库操作,操作成功后,返回当前页的更改后的信息(数据库分页),用的是PrintWriter输出的,更新成功后,我想关闭当前子页,想把返回的信息直接返回到父页中进行替换,不知道不能不实现?

解决方案 »

  1.   

    就是这个回调函数,sClosed()是用来关闭弹出层的,'listDiv'是父页面的一个DIV的ID
    function goCallback5()
    {
      if (xmlHttp.readyState == 4) {
          if (xmlHttp.status == 200) {
           sClosed();
           var responseDiv = window.parent.document.getElementById('listDiv');
           alert(window.parent.document.getElementById('listDiv').id);
           if(responseDiv.hasChildNodes()) {   //判断这个标签中间是否有内容
                   responseDiv.removeChild(responseDiv.childNodes[0]);  //删除掉内容对象               }
              window.parent.document.getElementById('listDiv').innerHTML=xmlHttp.responseText;
          }
        }
    }
      

  2.   

    我的父页面确切的说是一个servlet
      

  3.   

    我的主页面是一个frame,分为三部分,上面标题,左面导航,右面显示,显示部分全都是出servlet生成的,当我关闭弹出的层后,此时也已经执行到了goCallback5()方法,但是此时的window.location.href的值仍然是子页面的
      

  4.   

    function openWin_h(src,w,h){
        var info = "<iframe name=hyh frameBorder=0 width=100% height=100% src='"+src+"'></iframe>";
         sAlert(info,w,h);
    }
    function sAlert(str,w,h){
        var msgw,msgh,bordercolor;
        if(w==null){
             msgw = 300;
         }else{
             msgw=w;// 提示窗口的宽度
         }
        if(h==null){
             msgh = 100;
         }else{
             msgh=h;// 提示窗口的高度
         }
         titlecolor = "#393c3e";// 提示窗口的边框颜色a7cadd,cfcdaf,5690a1,287798,73878c,242a1b,bdbdbd,3996c6,88beec,adc9f0,abd6e0
         bordercolor = "#eee";//提示窗口的标题颜色99aaff
        var sWidth,sHeight;
         sWidth=document.body.offsetWidth;
        //sWidth=window.screen.availWidth;
         sHeight=document.body.offsetHeight;
        //sHeight=window.screen.availheight;
        var bgObj=document.createElement("div");
         bgObj.setAttribute('id','bgDiv');
         bgObj.style.position="absolute";
         bgObj.style.top="0";
         bgObj.style.background="#777";
         bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
         bgObj.style.opacity="0.6";
         bgObj.style.left="0";
        var hhhh = document.body.offsetHeight;
         bgObj.style.width=document.body.scrollWidth + "px";
         bgObj.style.height=document.body.scrollHeight   + "px";
         document.body.appendChild(bgObj);
        var msgObj=document.createElement("div")
         msgObj.setAttribute("id","msgDiv");
         msgObj.setAttribute("align","center");
         msgObj.style.position="absolute";
         msgObj.style.background="white";
         msgObj.style.font="12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";
         msgObj.style.border="1px solid " + bordercolor;
         msgObj.style.width=msgw + "px";
         msgObj.style.height=msgh + "px";
        //msgObj.style.top=(document.body.scrollTop + (sHeight-msgh)/2) + "px";
         msgObj.style.top= 60 + "px";
         msgObj.style.left=(sWidth-msgw)/2 + "px";
        var title=document.createElement("h4");
         title.setAttribute("id","msgTitle");
         title.setAttribute("align","right");
         title.style.margin="0";
         title.style.padding="3px";
         title.style.background= titlecolor;
         title.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";
         title.style.opacity="0.75";
         title.style.border="1px solid " + titlecolor;
         title.style.height="18px";
         title.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif";
         title.style.color="648de1";
         title.style.fontWeight="bold";
         title.style.cursor="pointer";
         title.innerHTML="×";
         title.onclick=function(){
             document.body.removeChild(bgObj);
             document.getElementById("msgDiv").removeChild(title);
             document.body.removeChild(msgObj);
         }
         document.body.appendChild(msgObj);
         document.getElementById("msgDiv").appendChild(title);
        var txt=document.createElement("p");
         txt.style.margin="1em 0"
         txt.setAttribute("id","msgTxt");
         txt.innerHTML=str;
         document.getElementById("msgDiv").appendChild(txt);
    }
    function sClosed(){
        var bgObj = parent.document.getElementById("bgDiv");
         parent.document.body.removeChild(bgObj);
         parent.document.getElementById("msgDiv").removeChild(parent.document.getElementById("msgTitle"));
         parent.document.body.removeChild(parent.document.getElementById("msgDiv"));
         parent.location.reload();
    }这个就是弹出的层,层里有个iframe,iframe里有个Jsp,现在就是当执行sClolsed()方法后,虽然不显示层以有层中的任何东西(包括JSP),但是,还是停留在了那个JSP页中