【问题标题】:PHP and window.close in JavaScriptJavaScript 中的 PHP 和 window.close
【发布时间】:2011-11-22 15:23:46
【问题描述】:

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

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

所以当我刷新时,有时显示数据,有时不显示。你知道为什么会发生这种情况吗?

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

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

【问题讨论】:

  • 我没有看到这与当前编写的 PHP 有什么关系,您提供的最小 JavaScript 代码也不能真正帮助我们解决任何问题。
  • 我认为这可能是因为客户端上的事件在发布到服务器之前触发,但对于这种情况,行为最终将是异步的。也许您想在弹出窗口中更改您的表单以返回确认数据已保存的内容,然后将您的 refreshParent 函数更改为在此表单加载时触发,当且仅当您确认已成功发布。

标签: javascript popup window


【解决方案1】:

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

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

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

【讨论】:

  • @MaximilianoPoggio:很高兴能帮上忙!只是一件事..您介意分享您如何获得 ajax 来帮助您使用 javascript 获得结果以重新加载页面吗? :)
【解决方案2】:

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

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

【讨论】:

  • 这就是我所说的..应该写成答案..投票
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-24
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多