PHP和windows.close在JavaScript中

时间:2011-11-22 15:23:47

标签: javascript popup window

我有问题。我有一个页面,当您单击按钮时,会显示带有表单的弹出窗口。所以,我完成了一些数据并提交。我想要做的是,提交表单,关闭表单并刷新父页面。我不想用AJAX做这件事。

问题是在我的父页面中我必须使用表单的输入信息刷新内容。

因此,当我刷新时,有时显示数据,有时不显示。你知道为什么会这样吗?

我只是在表单中使用onsubmit="refreshParent()"。信息始终存储在我的数据库中,因此我认为问题可能是有时刷新会捕获新信息,有时则不会。

function refreshParent() {    
    window.opener.location.reload();
    window.close();
}

3 个答案:

答案 0 :(得分:2)

我用它来重新加载打开弹出窗口的页面:

 <script language="JavaScript">
 <!--
 function reloadParentPage() {
     window.opener.location.href = window.opener.location.href;
     if (window.opener.progressWindow) {
         window.opener.progressWindow.close()
     }
     window.close();
 }
 //-->
 </script>

顺便说一句,上面的代码是通过弹出页面中的链接或按钮调用的。

答案 1 :(得分:1)

执行插入的脚本与重新加载父级的脚本之间存在竞争条件。

解决方案是在提交后在页面上调用refreshParent - 这样您就知道数据在数据库中。您甚至不必在文档就绪时执行此操作 - 返回刚刚定义的存根页面并在head标记中调用refreshParent。

答案 2 :(得分:0)

在PHP中运行post脚本时,最后请包含以下代码:

echo '<html><script language="javascript">
      parent.location.href="http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"].'"; // or any other url
      </script></html>';

这将输出一个将重新加载窗口的JavaScript。