子窗口关闭,父窗口怎么刷新

时间:2021-01-02 23:53:10
在做一个项目,  
大概流程是 点了添加按钮以后,弹出一个窗口, 然后填入相关数据,点击确定 ,然后关闭该窗口 
回到刚才的列表页面   .
我想关闭子窗口的时候  ,在父窗口(列表页面)同时刷新显示出刚才添加的数据 .  不知道该怎么办了  .
在论坛找了好多资料  都不行..
部分代码:
子窗口的js
点击确定以后调用这个方法   ----
function tosave(){
var form = document.getElementById("form");
form.action = document.getElementById("_ContextPath").value + "/keep/BaoYang/save?";
form.submit();
window.close();
}
同时<body onUnload="javascrip:reshow();">
function reshow(){
window.opener.location.reload();
}


求达人解决  谢谢!

14 个解决方案

#1


1、打开子窗口
2、在子窗口中对父窗口的变量进行复制
3、关闭子窗口


--这是父窗口中,点击“添加人员”弹出子窗口--

<td class="tdConOne">
<input type="text" id="number" name="number" class="input" disabled="disabled" />
<font color="red"> *</font>
&nbsp;&nbsp;
<input type="button" value="添加人员" class="button"  
onclick="openwin('*.do',700,550)"/>
</td>

//这个函数是打开一个新的窗口
function openwin(url,wwidth,wheight) 
 {
  var x=(screen.Width-wwidth)/2;
  var y=(screen.Height-wheight)/2;
  window.open(url, '', 'toolbars=0, scrollbars=0, location=0,
  statusbars=0, menubars=0, resizable=0, width='+wwidth+', 
  height='+wheight+', left='+x+', top='+y);
 }


--这是子窗口中,对父窗口的变量进行赋值,赋值后关闭子窗口--

//从子窗口中给父窗口中的变量赋值
opener.document.getElementById('number').value=valueNumber;
opener.document.getElementById('personIds').value=values;

window.close(); //关闭子页面



#2


2、在子窗口中对父窗口的变量进行 赋值

#3


$("#addForm").ajaxSubmit({
beforeSubmit:function () {
$("#saveBtn").attr("disabled",true);
}, 
success:function (data) {
if(data == "ok") {
alert("增加成功");
flushParentPage();
window.close();
}
if(data == "error") {
alert("增加失败");
}
$("#saveBtn").attr("disabled",false);
},
complete:function () {
$("#saveBtn").attr("disabled",false);
},
error : function() {
$("#saveBtn").attr("disabled",false);
alert("请求错误");
}
});
}


js里面写个这个,我也看不太懂 ,反正就这么写的
function flushParentPage() {
var pageNo = 1;
try {
pageNo = window.opener.document.getElementById("pageNo").value;
var url = window.opener.document.getElementById("url").value;
if(url.indexOf("?") != -1) {
url += "&pageNo=" + pageNo;
} else {
url += "?pageNo=" + pageNo;
}
window.opener.document.queryForm.setAttribute("action", url);
} catch (err) {

}
window.opener.document.queryForm.submit();
}

function closeOpenPage() {
window.close();
}

#4


不是有parent吗

#5


父窗口中的js片段
//xxAction是你要打开页面前的逻辑处理,再在action的配置文件中跳转到你要打开的jsp页面
open("xxAction","","menubar=no,toolbar=no,status=no,width=500,heigth=300");

在子窗口添加一个确定按钮触发一个事件,在js代码中最后加上下面代码
//opener表示的是父窗口
window.opener.document.getElementById("xxx").value = mgrno;
window.close();

#6


上面的xxx是你父窗口中要赋的值。mgrno是子窗口选中的值。我忘记改过来了

#7


谢谢几位的回答  不过 我的父窗口是一个table    
在子窗口添加完成以后  我想让刚刚添加的数据直接添加到table里。。

#8


该回复于2012-10-16 10:17:30被版主删除

#9


首先你先拿到子窗口的数据,然后再把它们赋值到父窗口页面,至于是不是table,那你就在《td》<span id="a"></span></td>就行,获取值的方法在网上找找,很多

#10


我给楼主一个思路吧:
1.弹出子窗口时,向server发送数据
2.server端处理完,如果是成功向数据库插入一条记录,返回相应标识。返回的数据一般是一端js代码,此js中执行关闭窗口的操作,如果插入了新数据就刷新父窗口的列表
3.如果子窗口是用 window.open 方法弹出,通过 parent 这个关键字就可以 访问到父窗口

#11


parent.window.close();
parent.window.location.reload();

#12


<script type="text/javascript">
function ref()
{
window.onbeforeunload=function window.onbeforeunload(){
    if (document.body.clientWidth-event.clientX<21||event.altKey||event.ctrlKey){
          window.opener.location.reload();
     }
}
}
</script>
如果是按钮关闭子窗口直接调用ref函数即可

#13


别用弹出窗口了,用div层吧....

#14


该回复于2012-10-16 13:00:28被版主删除

#1


1、打开子窗口
2、在子窗口中对父窗口的变量进行复制
3、关闭子窗口


--这是父窗口中,点击“添加人员”弹出子窗口--

<td class="tdConOne">
<input type="text" id="number" name="number" class="input" disabled="disabled" />
<font color="red"> *</font>
&nbsp;&nbsp;
<input type="button" value="添加人员" class="button"  
onclick="openwin('*.do',700,550)"/>
</td>

//这个函数是打开一个新的窗口
function openwin(url,wwidth,wheight) 
 {
  var x=(screen.Width-wwidth)/2;
  var y=(screen.Height-wheight)/2;
  window.open(url, '', 'toolbars=0, scrollbars=0, location=0,
  statusbars=0, menubars=0, resizable=0, width='+wwidth+', 
  height='+wheight+', left='+x+', top='+y);
 }


--这是子窗口中,对父窗口的变量进行赋值,赋值后关闭子窗口--

//从子窗口中给父窗口中的变量赋值
opener.document.getElementById('number').value=valueNumber;
opener.document.getElementById('personIds').value=values;

window.close(); //关闭子页面



#2


2、在子窗口中对父窗口的变量进行 赋值

#3


$("#addForm").ajaxSubmit({
beforeSubmit:function () {
$("#saveBtn").attr("disabled",true);
}, 
success:function (data) {
if(data == "ok") {
alert("增加成功");
flushParentPage();
window.close();
}
if(data == "error") {
alert("增加失败");
}
$("#saveBtn").attr("disabled",false);
},
complete:function () {
$("#saveBtn").attr("disabled",false);
},
error : function() {
$("#saveBtn").attr("disabled",false);
alert("请求错误");
}
});
}


js里面写个这个,我也看不太懂 ,反正就这么写的
function flushParentPage() {
var pageNo = 1;
try {
pageNo = window.opener.document.getElementById("pageNo").value;
var url = window.opener.document.getElementById("url").value;
if(url.indexOf("?") != -1) {
url += "&pageNo=" + pageNo;
} else {
url += "?pageNo=" + pageNo;
}
window.opener.document.queryForm.setAttribute("action", url);
} catch (err) {

}
window.opener.document.queryForm.submit();
}

function closeOpenPage() {
window.close();
}

#4


不是有parent吗

#5


父窗口中的js片段
//xxAction是你要打开页面前的逻辑处理,再在action的配置文件中跳转到你要打开的jsp页面
open("xxAction","","menubar=no,toolbar=no,status=no,width=500,heigth=300");

在子窗口添加一个确定按钮触发一个事件,在js代码中最后加上下面代码
//opener表示的是父窗口
window.opener.document.getElementById("xxx").value = mgrno;
window.close();

#6


上面的xxx是你父窗口中要赋的值。mgrno是子窗口选中的值。我忘记改过来了

#7


谢谢几位的回答  不过 我的父窗口是一个table    
在子窗口添加完成以后  我想让刚刚添加的数据直接添加到table里。。

#8


该回复于2012-10-16 10:17:30被版主删除

#9


首先你先拿到子窗口的数据,然后再把它们赋值到父窗口页面,至于是不是table,那你就在《td》<span id="a"></span></td>就行,获取值的方法在网上找找,很多

#10


我给楼主一个思路吧:
1.弹出子窗口时,向server发送数据
2.server端处理完,如果是成功向数据库插入一条记录,返回相应标识。返回的数据一般是一端js代码,此js中执行关闭窗口的操作,如果插入了新数据就刷新父窗口的列表
3.如果子窗口是用 window.open 方法弹出,通过 parent 这个关键字就可以 访问到父窗口

#11


parent.window.close();
parent.window.location.reload();

#12


<script type="text/javascript">
function ref()
{
window.onbeforeunload=function window.onbeforeunload(){
    if (document.body.clientWidth-event.clientX<21||event.altKey||event.ctrlKey){
          window.opener.location.reload();
     }
}
}
</script>
如果是按钮关闭子窗口直接调用ref函数即可

#13


别用弹出窗口了,用div层吧....

#14


该回复于2012-10-16 13:00:28被版主删除