【问题标题】:How to close Browser Tab After Submitting a Form?提交表单后如何关闭浏览器选项卡?
【发布时间】:2012-01-11 10:08:39
【问题描述】:
<?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。

谁能帮帮我?提前致谢!

【问题讨论】:

    标签: php javascript


    【解决方案1】:
    <?php    
        /* ... SQL EXECUTION TO UPDATE DB ... */
    
        echo "<script>window.close();</script>";
    ?>
    

    并从表单onsubmit 事件中删除window.close()

    【讨论】:

    • 也许改成echo "&lt;script type="text/javascript"&gt;window.close();&lt;/script&gt;
    • did 对我有用,但这不是因为我在尝试关闭它之前使用了 header('Location: text.php'); 函数,所以如果你正在使用header 但您要重定向到的 PHP 页面中的 window.close() 脚​​本...(在我的示例中为text.php)...希望这会有所帮助。
    • 2018 年:在 chrome 或 firefox 中不再工作 - 一些安全问题
    【解决方案2】:

    form 标记中删除onsubmit。改变这个:

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

    收件人:

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

    然后写这个:

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

    【讨论】:

      【解决方案3】:

      Window.close( ) 不像以前那样工作了。可以在这里看到:

      window.close and self.close do not close the window in Chrome

      就我而言,我意识到我不需要关闭页面。因此,您可以使用以下命令将用户重定向到另一个页面:

      window.location.replace("https://stackoverflow.com/");
      

      【讨论】:

        【解决方案4】:

        如果您必须使用与操作相同的页面,则不能使用onSubmit="window.close();",因为它会在收到响应之前关闭窗口。您必须在处理完 SQL 数据后动态输出一个关闭窗口的 JS sn-p。然而,使用另一个页面作为表单操作会更加优雅。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            这对我来说非常有用,:

             $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>';           
                    }
            

            【讨论】:

            • 这仍然不能解决问题。我正在尝试为大型活动构建一个小型注册系统。注册是通过扫描 QR 码(“门票”)进行的,我正在尝试最大限度地减少点击量。警报仍将要求我的注册团队进行此额外交互(确认/确定警报)!
            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

              你可以试试this methods

              window.open(location, '_self').close();
              

              【讨论】:

                猜你喜欢
                • 2015-12-27
                • 2013-07-19
                • 1970-01-01
                • 2021-08-10
                • 1970-01-01
                • 1970-01-01
                • 2013-08-16
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多