假设父窗口是 www.mysite.com/index.php
有几个链接。当用户单击这些链接时,会打开一个弹出窗口。
弹出窗口有一些形式。当用户单击提交按钮时,会在弹出窗口中调用另一个脚本,如下所示:
if ((isset($_POST['Complete'])) && ($_POST['Complete']=='Complete')) {
unset($_POST['Complete']);
include 'result.php';
return;
}
result.php
将数据输入数据库并将结果传递给父窗口,如下
<script language="JavaScript" type="text/javascript">
window.opener.location.href = 'submission.php';
window.close();
</script>
然后父窗口显示最终结果,更新主数据库并向用户发送电子邮件。
现在问题来了。
- 用户点击 parent 的链接。
- 表单打开,但用户单击关闭(浏览器十字按钮)。
- 用户然后关闭父窗口
- 然后用户访问网站的其他页面;说其他.php
- 但主数据库正在更新,并且用户正在收到电子邮件(尽管全部
null
值)。
由于表单从未完成,因此不应调用 result.php
。如果 result.php
从未被调用,submission.php 永远不应该被调用。
这里发生了什么?
最佳答案
将关闭按钮的类型更改为按钮。
关于javascript - PHP JavaScript : Closing Popup calling parent window in background,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34462612/