我有一个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;页面我已经为保存和提交按钮定义了两个单独的操作,但是当我单击保存按钮时,我面临相同的提交按钮过程。我该如何解决这个问题?请帮忙。提前谢谢。
答案 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";
}
}
当你正在做你想做的事情时,我倾向于保持我的名字相同。这样我就可以对它们进行测试。我通常使用action
,method
,mode
和data
之类的名称,然后我可以测试这些值。我做的另一个好习惯是var_dump
然后整个$_POST
示例强>
var_dump($_POST);
var_dump($_GET);
var_dump($_REQUEST);
通过执行这些测试条件,您可以更好地控制代码,而不会被名称所淹没。我喜欢做的另一件事是将这些用于页面操作,这些action
,mode
,method
帮助我生成用户正在寻找的确切页面。
示例强>
<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";
}