JavaScript中的PHP和window.close

JavaScript中的PHP和window.close,javascript,popup,window,Javascript,Popup,Window,我有个问题。我有一个页面,当你点击一个按钮时,会显示一个带有表单的弹出窗口。因此,我完成了一些数据并提交。我要做的是,提交表单,关闭表单并刷新父页面。我不想用AJAX做这件事 问题是,在父页面中,我必须使用表单的输入信息刷新内容 因此,当我刷新时,有时显示数据,有时不显示。你知道为什么会这样吗 我只是在表单中使用onsubmit=“refreshParent()”。信息总是存储在我的数据库中,所以我认为问题可能是有时候刷新捕捉到了新信息,有时候没有 function refreshParent(

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

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

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

我只是在表单中使用
onsubmit=“refreshParent()”
。信息总是存储在我的数据库中,所以我认为问题可能是有时候刷新捕捉到了新信息,有时候没有

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

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


解决方案是在提交后调用页面上的refreshParent,这样您就知道数据在数据库中。您甚至不必在document ready上执行此操作—返回一个存根页,该存根页只定义并调用head标记中的refreshParent。

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


解决方案是在提交后调用页面上的refreshParent,这样您就知道数据在数据库中。您甚至不必在document ready上执行此操作—返回一个存根页,该存根页只定义并调用head标记中的refreshParent。

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

echo '<html><script language="javascript">
      parent.location.href="http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"].'"; // or any other url
      </script></html>';
echo'
parent.location.href=“http://.”$\u SERVER[“SERVER\u NAME”]。$\u SERVER[“REQUEST\u URI”]。;//或任何其他url
';

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

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

echo '<html><script language="javascript">
      parent.location.href="http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"].'"; // or any other url
      </script></html>';
echo'
parent.location.href=“http://.”$\u SERVER[“SERVER\u NAME”]。$\u SERVER[“REQUEST\u URI”]。;//或任何其他url
';

这将输出一个javascript,用于重新加载窗口。

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

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


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

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

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


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

我看不出这与当前编写的PHP有什么关系,您提供的最小JavaScript代码也没有真正帮助我们解决任何问题。我想这可能是因为客户端上的事件在发送到服务器之前触发,但在这种情况下,行为最终将是异步的。可能您希望更改弹出窗口上的表单,以返回确认数据已保存的内容,然后更改刷新父函数,以便在加载此表单时启动,前提是您确认已成功发布。我不认为这与当前编写的PHP有任何关系,您提供的最少JavaScript代码也没有真正帮助我们解决任何问题。我认为这可能是因为客户端上的事件在发送到服务器之前触发,但在这种情况下,行为最终将是异步的。可能您想更改弹出窗口上的表单,以返回确认数据已保存的内容,然后更改refreshParent函数,以便在加载此表单时启动,前提是您确认已成功发布。这正是我所说的。。应该写下来作为答复。。投赞成票这和我说的差不多。。应该写下来作为答复。。投票up@MaximilianoPoggio字体很高兴能帮忙!只有一件事。。您是否介意分享一下您是如何使用ajax来帮助您通过javascript获得页面重新加载的结果的?:)@马克西米利安波吉奥:很高兴能帮上忙!只有一件事。。您是否介意分享一下您是如何使用ajax来帮助您通过javascript获得页面重新加载的结果的?:)