两个按钮与同一个php页面上的不同动作

时间:2014-07-23 05:42:23

标签: javascript html5

我有一个PHP页面,其中包含两个名为Save和Submit.One的按钮,用于保存表单数据,另一个用于提交最终数据。

<button id="save" name="save" onclick="saveForm();">Save</button>

<button id="submit" name="submit" onclick="validate();">Submit</button>

这是两个JavaScript函数:

function saveForm() {
    document.submission.method = "POST";
    document.submission.action = "SubmissionCheck.php";
    document.submission.submit();
}

function validate() {
    // some validation code here
    // after validation the rest will work
    document.submission.method = "POST";
    document.submission.action = "SubmissionCheck.php";
    document.submission.submit();
}

In&#39; SubmissionCheck.php&#39;页面我已经为保存和提交按钮定义了两个单独的操作,但是当我单击保存按钮时,我面临相同的提交按钮过程。我该如何解决这个问题?请帮忙。提前谢谢。

3 个答案:

答案 0 :(得分:0)

你可以区分这样的行动

function saveForm() {
document.submission.method = "POST";
document.submission.action = "SubmissionCheck.php";
document.submission.submit();
 }
 function validate() {
--some validation code here---
--after validation the rest will work--
document.submission.method = "POST";
document.submission.action = "SubmissionCheck.php?validate";
document.submission.submit();
}

然后在SubmissionCheck.php文件中检查

if(isset($_GET['validate']))
{
  // perform actions for validation
}

答案 1 :(得分:0)

<button id="save" value="save" name="method" onclick="saveForm();">Save</button>

<button id="submit" value="submit" name="method" onclick="validate();">Submit</button>

<强> PHP

if(isset($_POST["method"])){
   if($_POST["method"] == "save"){
      echo "Saving File";
     }elseif($_POST["method"] == "submit"){
      echo "Submitting File";
     }
  }

当你正在做你想做的事情时,我倾向于保持我的名字相同。这样我就可以对它们进行测试。我通常使用actionmethodmodedata之类的名称,然后我可以测试这些值。我做的另一个好习惯是var_dump然后整个$_POST

示例

var_dump($_POST);
var_dump($_GET);
var_dump($_REQUEST);

通过执行这些测试条件,您可以更好地控制代码,而不会被名称所淹没。我喜欢做的另一件事是将这些用于页面操作,这些actionmodemethod帮助我生成用户正在寻找的确切页面。

示例

<input type="text" value="" name="method" placeholder="Insert a method">
<input type="text" value="" name="action" placeholder="Insert a action">
<input type="text" value="" name="mode" placeholder="Insert a mode">

然后在提交时我可以使用这些

$path = "";
if(isset($_POST["method"])){
   path.="method=".$_POST["method"];
   if(isset($_POST["action"])){
      path.="&action=".$_POST["action"];
      if(isset($_POST["mode"])){
      path.="&mode=".$_POST["mode"];
     }
   }
  header("Location: /path/".$path);
}

这将输出三种方式......如果只有方法,方法和动作,以及方法,动作和模式。所以一般来说,对通用名称进行测试有时会更好。希望这个小小的PHP $_POST用法可以帮助你一点点。

注意我从未清理过任何$_POST值,但如果您将它们用作您真正应该使用的路径,或者如果您访问mySQL数据库,请使用mysqli_real_escape_string和其他卫生方法。

您的表单默认操作也会被阻止,因为由于您没有值,$_POST每次都会为空。除非它被阻止然后正确提交。

<form onsubmit="return false">
    //buttons
</form>

答案 2 :(得分:-1)

检查isset:

if (isset($_POST["save"])) 
{
    echo "save action";    
}
if (isset($_POST["submit"])) 
{  
    echo "submit action";
}