本文详解JavaScript中子页面执行完成后刷新父页面的两种常见场景。第一种通过window.open打开子窗口,利用window.opener调用父页面回调函数实现刷新;第二种在Servlet后台处理删除操作后,直接通过out.print输出JavaScript代码跳转回主页面并强制刷新。
本文通过具体实例,深入分析JavaScript中子页面执行完毕后如何刷新父页面的实现机制,旨在为开发者提供实用的参考方案。
通过window.open实现子页面刷新父页面
首先探讨主页面与子页面的交互逻辑。
<input id="btnAdd" type="button" onclick="openWin();" value="添加" />
在主页面JavaScript中,通常定义如下核心代码:
function openWin() {
window.open('addInfo.jsp', '_blank',
'width=300,height=400,top=200,left=400');
}
//定义callback方法,用于回调
function callback() {
refreshWin();
}
//刷新当前页面
function refreshWin() {
//调用刷新页面的方法,此处RefreshSocket为刷新页面对应的方法
//也就是说,如果页面有个刷新按钮,
//则点击按钮提交的类名就是此处的类名
var url = 'RefreshSocket';
window.location.href = url;
}
在addInfo.jsp子页面中,包含以下表单与脚本代码:
<form name="form" action="AddSocket" method="get">
<input id="onSub" type="button" onclick="formSubmit();" value="确定">
</form>
function formSubmit(){
this.form.submit();
//提交action到AddSocket类
window.opener.callback();
//上述执行完成后,调用打开页面的callback方法,
//此处是调用主页面的callback方法
window.close();//当前页面关闭
}
Servlet后台处理后直接跳转刷新
此外,若涉及删除等操作,流程通常是从JSP页面跳转至后台Java类,在类中完成一系列业务逻辑处理后,若需刷新当前页面,可直接在后台代码中编写跳转语句,具体实现如下:
主页面mainPage.jsp的相关配置。
//删除操作关联后台的DeleteSocket类,如果要传参数,用?即可
window.location.href = DeleteSocket
后台DeleteSocket类的处理逻辑。
具体代码实现如下:
// 执行一系列业务操作后,可直接编写JavaScript代码
// 执行上述语句后,即可直接跳转回主页面并完成刷新
out.print("<script type='text/javascript'>location.href='mainPage.jsp'</script>");
希望本文所述的JavaScript程序设计技巧能对各位读者有所帮助。