2011-12-02 123 views
14
<?php 
    /* ... SQL EXECUTION TO UPDATE DB ... */ 
?> 

<form method = "post" 
     action = "<?=$_SERVER['php_self']?>" 
     onSubmit= "window.close();"> 
    ... 
    <input type="submit" value="submit" /> 
    <input type="reset" value="reset" /> 
</form> 

我想提交表单后关闭页面。运行上面的代码后,点击提交按钮后页面关闭,但SQL不执行。如何在提交表单后关闭浏览器选项卡?

任何人都可以帮助我吗?提前致谢!

回答

37
<?php  
    /* ... SQL EXECUTION TO UPDATE DB ... */ 

    echo "<script>window.close();</script>"; 
?> 

并从形式onsubmit事件

+2

它不工作 – Dimple

+0

也许它更改为'回声“<脚本类型=”文本/ javascript“> window.close();' – HighTechProgramming15

+0

这**做了**工作形式,但它不是因为我使用的是'header('Location:text.php');'function before i' m试图关闭它,所以如果你正在使用'header',而是在你正在重定向到的PHP页面中的'window.close()'脚本......(在我的例子中是'text.php')。 。希望这会有所帮助。 –

0

这是因为事件onsubmit在表单提交之前触发。

删除您的onSubmit,并在处理完请求后在PHP脚本中输出该JavaScript。您现在正在关闭窗口,并取消对服务器的请求。

1

window.close()如果使用同一个页面的动作,则不能使用onSubmit="window.close();"作为接收到响应前,将关闭该窗口。你必须dinamycally输出一个JS代码片段,在SQL数据处理后关闭窗口。然而,使用另一个页面作为表单动作会更优雅。

7

form标记中删除onsubmit。更改此:

<input type="submit" value="submit" /> 

要:

<input type="submit" value="submit" name='btnSub' /> 

而且这样写:

if(isset($_POST['btnSub'])) 
    echo "<script>window.close();</script>"; 
1

尝试onsubmit="submit(); window.close()"

0

这出色工作对我来说,:

$query = "INSERT INTO `table` (...or put your preferred sql stuff)" 
$result = mysqli_query($connect, $query); 
if($result){ 
    // If everything runs fine with your sql query you will see a message and then the window 
    //closes 
     echo '<script language="javascript">'; 
     echo 'alert("Successful!")'; 
     echo '</script>'; 
     echo "<script>window.close();</script>"; 
     } 
else { 
     echo '<script language="javascript">'; 
     echo 'alert("Problem with database or something!")'; 
     echo '</script>';   
     } 
+0

@CecileOlse ñ感谢编辑,我没有注意到错字... – Macarrao

+0

这仍然不能解决问题伊莫。 我正在尝试为大型活动构建一个小型注册系统。通过扫描QR码(“门票”)进行注册,我试图尽量减少点击次数。警报仍然需要我的注册团队进行额外的交互(确认/确认警报)! – MahNas92

相关问题