如何用window.showModalDialog打开弹出子窗口,并在子窗口关闭时刷新父窗口

在父页面usermanager.jsp中打开子窗口updateuser.jsp,并在在子窗口关闭时刷新父窗口。

要做的功能是:
如何用window.showModalDialog打开弹出子窗口,并在子窗口关闭时刷新父窗口 - 小川哥 - 我的博客
父页面usermanager.jsp

如何用window.showModalDialog打开弹出子窗口,并在子窗口关闭时刷新父窗口 - 小川哥 - 我的博客
子窗口updateuser.jsp

在点修改的时候,弹出子页面(里面包含此用户的信息)
如何用window.showModalDialog打开弹出子窗口,并在子窗口关闭时刷新父窗口 - 小川哥 - 我的博客
在子页面中,修改完点保存的时候,保存数据,自身关闭,父页面刷新,以显示修改后的数据

功能清楚了,下面我就来实现它!!

 

点 修改时弹出子窗口的代码(用window.showModalDialog主要是让用户必须点此修改响应后才能做其他的任务):

<a href="#" onClick="window.showModalDialog('userupdate.do?userid=<%=lo_dt.uf_GetValue(i, 0)%>',window,'dialogWidth:480px;dialogHeight:180px;status:no;')">修改</a>


userupdate.do中是根据传过去的用户ID取用户的信息,然后再mapping.findforward()到子窗口updateuser.jsp ,在此窗口是显示用户的其他信息。

在子窗口中点保存修改,并刷新父窗口的代码:注意提交方式是在一个iframe中隐式提交 的
<iframe name="commitArea" style='display:none;'></iframe>
<form action="usersave.do" method="post" target="commitArea">

<input type="button" value="保存" onClick="check();">
</form>

<script>
    function check(){
     var obj = document.getElementById("user_dm");
     var obj1 = document.getElementById("user_pwd");
     var obj2 = document.getElementById("user_mc");
     if(obj.value == "" || obj1.value=="" || obj2.value==""){
      obj.focus();
      alert("用户账号、用户名称、用户密码均不能为空!");
     }else{
      document.forms[0].submit();   //提交保存 修改后的数据,usersave.do来保存并mappinf.findforware返回到显示用户列表页面
      window.dialogArguments.window.location="user.do"; //刷新父窗口以显示修改后的数据
       self.close(); //关闭自己
     }
    }
   </script>

这样就可以了吗?经实验查正,确实是可以的。不过还存在一个问题,就是在机子配置比较好的时候,保存的比较快,在刷新父窗口取最新值时,可以取到最新值,但当机子配置比较低时,取到的值还是老数据。这是因为刷新页面的动作 发生 在action里修改保存 之前了!!

如何保证刷新时,已经修改保存完成了呢??

加子页面一个标志变量!!

就是在保存修改的action里面

执行更新语句
request.setAttribute("updateuserok","修改成功");
根据用户ID重新查询用户的信息,保存到request里面,mapping.findforware()到子页面,

在子页面里判断此变量是否存在,并刷新父页面,关闭自己。

<logic:present name="updateuserok">
    <script>
    alert("保存成功!");
    window.dialogArguments.window.location="user.do";
    self.close();
</script>
   </logic:present>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值