繁体   English   中英

如何根据单击的按钮将表单提交到两个不同的页面,没有 javascript

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM