子页面刷新父页面

本文介绍了一种在父窗口中通过按钮点击事件弹出子窗口,并在子窗口关闭后刷新父窗口的方法。使用JavaScript实现了子窗口的弹出与关闭功能,同时确保了父窗口的内容能够得到更新。

父窗口弹出子窗口的 button处理事件:
private void Button1_Click(object sender, System.EventArgs e)
  {
   Response.Write("<script language=javascript>window.open('WebForm1.aspx','', 'alwaysRaised=1,dependent=1,resizable=0,scrollbars,width=450,height=550');</script>");
  }
父窗口html代码添加如下javascript代码
<script language="javascript">
function refresh()
{
this.location = this.location;
}
</script>
子窗口关闭窗口的 button处理事件:
private void Button1_Click(object sender, System.EventArgs e)
{
StringBuilder scriptString = new StringBuilder();
scriptString.Append("<script language = javascript>");
scriptString.Append("window.opener.refresh();");

scriptString.Append( " window.focus();" );
scriptString.Append( " window.opener=null;" );
scriptString.Append( " window.close(); " );

scriptString.Append("</"+"script>");
Response.Write(scriptString.ToString());

// Response.Write("<script language=javascript>window.close()</script>");
}

页面调用父页面刷新失败可能由多种原因导致,不同原因对应不同的解决办法: ### 父页面跳转失败 若在页面达到某个条件后,需让父页面跳转,可使用以下代码。若 `window.parent` 存在,就设置父页面的 `location.href`;若不存在,则设置当前页面的 `location.href`: ```javascript if(window.parent){ window.parent.location.href = '/xxx'; }else{ window.location.href = '/xxx'; } ``` ### 页面刷新父页面表格失效 - **表格的 id 取错**:要仔细检查父页面中表格的 id,保证页面代码里使用的表格 id 准确无误。例如,确保页面代码里 `window.parent.$('#dg').datagrid('reload')` 中的 `#dg` 与父页面表格的 id 一致 [^2]。 ```javascript $.ajax({ url : url, type : "POST", data : $('#' + formId).serializeArray(), success : function(data) { var jsonObject = jQuery.parseJSON(data); if (jsonObject == 'success') { layer.confirm('操作成功,是否关闭窗口?', { btn: ['确定', '取消'] }, function () { // 关闭弹出框口刷新表格 window.parent.$('#dg').datagrid('reload'); layer_close(); }, function () { }); } } }); ``` - **父页面 datagrid 的表格 row 是后来追加的且不存在 url**:这种情况需依据具体业务逻辑,保证表格数据加载和刷新的逻辑正确。 ### JS 跨域刷新父页面问题 若存在跨域问题,可使用 `try-catch` 语句处理。尝试重新加载父页面并关闭当前页面,若捕获到异常,就设置父页面的地址并关闭当前页面: ```javascript try{ window.parent.opener.location.reload(); window.parent.close(); }catch(e){ window.parent.opener.location = "父页面地址"; window.parent.opener = null; window.parent.close(); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值