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

转载 2011年01月17日 18:57:00

在父页面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>

相关文章推荐

总结JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作

一、Iframe 篇 //&&&&&&&&&&&&&&&&&&&&公共方法开始&&&&&&&&&&&&&&& //父对象得到子窗口的值 //ObjectID是窗口标识,ContentID是元素ID ...

火狐,chrome等非IE浏览器使用window.open打开子窗口,父窗口意外关闭

最近在做项目的时候,使用window.open()打开一个子窗口,父窗口却意外的关闭了。 当点击 “我的资料” 打开我的资料子窗口的时候,父窗口莫名其妙的关闭了,退到了登录界面: 这个问题...

js 之 父窗口获取弹出子窗口的输入框Value

Insert title here function browser.onclick() { var nW = window.open("","","width=170,height=200,...
  • EthanQ
  • EthanQ
  • 2012年02月09日 10:10
  • 1966

showModalDialog关闭子窗口刷新主窗口

showModalDialog和showModelessDialog 一、showModalDialog和showModelessDialog有什么不同?   showModalDialog:被打...

子窗口关闭以后,刷新父窗口的toolStripStatusLabel1的Text属性,怎么办

C#里面,子窗口关闭以后,刷新一个父窗口的控件的属性,怎么办 2011-10-25 16:24 提问者: 52104 | 浏览次数:731次 子窗口关闭以后,刷新父窗口的tool...

Flex 父窗口监听子窗口关闭并刷新DataGrid

1.父窗口

子窗口关闭,刷新父窗口

http://shawpnendu.blogspot.com/2009/02/automaticaly-refresh-parent-window.html  For data driven web ...
  • lJean
  • lJean
  • 2011年02月19日 14:55
  • 638

浏览器子窗口往父窗口传值遇到的window.opener is null 的问题

在做项目的时候遇到这样一个需求。 客户使用系统进行短信发送,可以通过选择数据库中的名片来添加收信人到一个列表框。我的想法是点击“选择名片”按钮,打开一个子窗口,子窗口为一个框架网页。分为左右两个框。...

子窗口与父窗口刷新

  • 2013年07月24日 12:19
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何用window.showModalDialog打开弹出子窗口,并在子窗口关闭时刷新父窗口
举报原因:
原因补充:

(最多只允许输入30个字)