Javascript 提交表单并关闭窗口-正确的方法?

Javascript 提交表单并关闭窗口-正确的方法?,javascript,php,Javascript,Php,我试图提交一个弹出对话框中的简单表单,然后关闭对话框。 我看过的最好的一篇文章是,但它似乎对我断断续续地起作用。表单启动的页面是修改数据库中记录的PHP页面。我认为,一旦发送请求,PHP页面就会执行,即使启动窗口关闭。显然不是。表有时更新,有时不更新。如果SQL操作速度不够快,页面将被关闭,进程将被终止 代码如下: <form id="xlationform" action="updatexlation.php" method="post" onsubmit="return closeFo

我试图提交一个弹出对话框中的简单表单,然后关闭对话框。 我看过的最好的一篇文章是,但它似乎对我断断续续地起作用。表单启动的页面是修改数据库中记录的PHP页面。我认为,一旦发送请求,PHP页面就会执行,即使启动窗口关闭。显然不是。表有时更新,有时不更新。如果SQL操作速度不够快,页面将被关闭,进程将被终止

代码如下:

<form id="xlationform" action="updatexlation.php" method="post" onsubmit="return closeForm(this);">
    Source: <br>
    <textarea disabled name="sterm" rows=10 cols=50><?php echo $source ?></textarea><br><br>
    Translation: <br>
    <textarea  name="xlt" rows=10 cols=50><?php echo $xlation ?></textarea><br><br>
    <input type="hidden" name="id" value="<?php echo $termid ?>">
    <input type="submit" value="Update">
</form>
<script>
function closeForm(f) {
    f.submit();
    window.close();
}
</script>

来源:


翻译:



响应页面只需在onload事件中使用window.close即可。

在updatexlation.php中执行类似操作:

$e = mysqli_query(...) if ($e) { echo "<script>window.close();</script>"; }
$e=mysqli_查询(…)if($e){echo“window.close();“;}

但是如上所述,避免使用弹出窗口。

在updatexlation.php中这样做:使用AJAX,关闭窗口,然后
返回false
。但实际上,你应该避免使用弹出窗口。这很有效,谢谢大家。我最终可能不会使用弹出窗口,但这个解决方案很有魅力。