[英]How to submit a form to two different pages depending on the button clicked, without javascript
我有一个带有文本区域和 2 个按钮的表单,我需要其中一个提交到其所在的同一页面,另一个提交到另一个 php 文件。 两个按钮都需要允许 post 引用文本区域。 我怎样才能做到这一点。
例如:
<form action="" method="post"> <textarea></textarea> <input type='submit' value='Preview'> //I want this to submit to the same page <input type='submit' value='Save'> // I want this to submit to save.php </form>
注意:我所有的 html 都是由 php 通过不同的脚本生成的,这些脚本会根据用户之前的操作而改变。
<?php
if (isset($_POST['action1']) || isset($_POST['action2'])) {
// handle textarea
if (isset($_POST['action1'])) {
header('Location: /action1.php');
exit();
}
header('Location: /action2.php');
exit();
}
?>
<form>
<fieldset>
<textarea name="text"></textarea>
<input type="submit" name="action1" value="Action1">
<input type="submit" name="action2" value="Action2">
</fieldset>
</form>
你只需要小心当用户按下回车键提交表单时会发生什么。 即会触发什么提交。
为每个提交按钮命名(例如 button1 和 button2)。 将您的表单提交到单个 php 脚本。 在此 php 脚本上,检查 $_POST 变量以查看单击了哪个按钮。 然后采取相应的行动,处理您的表单值并随后重定向到您想要的任何页面。
要检查单击了哪个按钮,请执行以下操作:
if ($_POST["button1"]) {
// do stuff
} elseif ($_POST["button2"]) {
// do other stuff
}
如果您使用CodeIgniter
有更好的方法来做到这一点。 ( CodeIgniter
的另一篇文章指出这是重复的,所以我想我会为CI
添加更好的解决方案。)
就我而言,我有一个购物车表格(例如)。 在那个表单上,我可能有按钮:结帐、更新购物车和清除。
形式:
这是购物车表单屏幕上的表单按钮:
<input type="submit" value="Update">
<input type="submit" value="Clear">
<input type="submit" value="Checkout">
Controller:
表单动作指向一个controller
方法保存( "cart/save/"
)。 Save
只是确定单击了哪个按钮并转发到相应的购物车 function 以处理表单提交。
购物车/保存()
public function save() {
$submit_button = $this->input->post('submit_button');
if ($submit_button == 'Update')
$this->update();
else if ($submit_button == 'Checkout')
$this->checkout();
else if ($submit_button == 'Clear')
$this->clear();
}
在 controller ( cart
) 中,我只需使用save()
方法调用的update()
、 clear()
和checkout()
函数。 无需重定向,通过 CI 的 redirect() 或 php header 重定向等。
我希望对某人有所帮助
您可以从服务器端执行此操作(如我之前回答的那样),您可以从客户端执行此操作作为我的答案:(您甚至可以同时执行):
<form action="" id="frm" method="post">
<textarea></textarea>
<input type='button' onclick="submitMe(this)" value='Preview'>
<input type='button' onclick="submitMe(this)" value='Save'>
</form>
<script>
function submitMe(obj){
if(obj.value == "Preview"){
document.getElementById('frm').action = 'preview.html'
}else{
document.getElementById('frm').action = 'save.html'
}
document.getElementById('frm').submit();
}
</script>
通过重定向在服务器端执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.