如何在一个提交按钮上有两个操作
how to have 2 actions on 1 submit button
我有一个带有提交按钮的表单。当点击提交按钮时,它会将信息发送到mysql。这一切都在起作用,但当点击提交按钮时,它只是重新加载页面。我想让它去发送信息到mysql,然后去页面谢谢.html。
我的提交按钮是:
<input type="submit" name="submit" id="submit" value="Submit" />
我的表单操作是:
<form name="list"; action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
此php代码将引导您进入另一个页面:
<?php
if ($_POST) { // check something is being sent by the form
// MySQL stuff here...
header("location:thankyou.html");
exit;
}
?>
// put the form here
或者,您可以将向数据库插入数据的php放在thankyou.html的顶部,并在那里提交表单。
就我个人而言,我喜欢把插页和表格放在同一页上,但这只是我个人的选择。
重要:在调用php重定向之前,页面不能有任何输出,甚至不能有空白,所以请确保将打开的php标记放在文件的顶部,不要打印或回显任何内容。
由于您将form
提交到同一页面,服务器将(在处理该页面上的任何PHP代码后)显示该页面。这里有几个选项:
- 将表单提交到不同的页面
- 处理完表单后从页面重定向
第一个选项意味着您可以将form
中的action
更改为以下内容:
<form name="list" action="formhandler.php" method="post">
这意味着formhandler.php
(或您决定调用它的任何名称)将有服务器端PHP代码来处理表单,然后该页面将显示您希望它显示的任何内容。
第二种选择是在你的PHP代码中(在你已经提交的页面上)使用重定向,在处理表单后将用户引导到另一个页面。PHP header()
函数是实现这一点的标准方法。类似这样的东西:
header("Location: thankyou.php");
这个应该是PHP代码在处理表单后所做的最后一件事。也就是说,你可能不希望你的服务器端代码在直觉上是终止的情况下继续执行。因此,您需要在exit
之后立即调用它来停止页面执行。(请记住,实际的重定向不是服务器端操作,服务器只是向浏览器发送Location
标头,并告诉浏览器它应该执行重定向。)
(此外,正如这里的其他答案中所指出的,在执行这样的重定向时,不应该有对页面的输出。)
此外,我想你也可以在你的PHP页面上有条件输出,如果它没有处理POST,则显示一组HTML内容(表单),如果它正在处理POST,那么显示另一组内容(感谢页面),但对我来说,这是一个滑坡。与其让一个命名资源(somepage.php)有条件地做不同的事情,不如将服务器端资源分开。(单一责任原则)
可以始终使用JS
<? if(!empty($_POST['submit']){
//do mysql stuff here
?>
<script type="text/javascript">
<!--
window.location = "thankyou.html "
//-->
</script><?
}?>
我建议将操作放在thankyou.php页面上,并使用post将mysql插入代码放在该页面上作为数据。
<form name="list" action="thankyou.php" method="post">
此外,如果你想让所有东西都在同一个页面上,你可以使用
<form name="list" action="<?php echo $_SERVER['PHP_SELF']; ?>?submit=1" method="post" >
在页面顶部的PHP代码中,进行快速
<?php if ($_GET['submit'] == '1') header('Location: http://www.example.com/'); ?>
- 在Google Analytics中跟踪用户,但只能在两个操作之间跟踪
- 一个jsp中有两个操作URL
- 无法延迟iPhone/iPad上的两个JavaScript操作
- 具有两个提交按钮和两个不同操作的 HTML 表单
- 表单以执行两个不同的操作
- 带有两个提交按钮的提交表单,每个按钮执行不同的操作问题
- 使用getElementById一次指定两个操作
- jQuery:当使用.click,.trigger()进行操作时,只有两个.click()事件中的第一个会运行
- 如何在操作类中识别两个不同的 JSP 页面按钮?如何基于 JSP 页面视图按钮和查看全部按钮编写条件
- 单用户操作触发两个事件-第二个事件不触发't触发器
- 如何在两个聚合之间进行操作
- 如何在同一个表单中有两个按钮来在 ajax 中执行不同的操作
- 仅将画布复合应用于两个操作
- 当表单以 html 为目标并在 IE11 中操作另一个 html 时,它最终会打开两个页面
- 是否可以操作两个变量等同于 JavaScript 中的一个常量
- 一个形成两个操作,具体取决于哪个按钮
- 两个点击操作一个按钮
- 如何在HTML中使用相同的输入值拥有一个输入字段,两个按钮和两个操作
- JSF 中的一个命令按钮中的两个操作
- 对按钮单击时的两个操作进行排序