2014-12-02 85 views
-1

我遇到一些麻烦代码我有,这是它的一个简化版本:如何使用POST仅提交一个提交按钮,从多个表单提交数据?

<form name="form1" method="post"> 
    <input type="text" name="test1" /> 
</form> 
asd 
<form name="form1" method="post"> 
    <input type="text" name="test2" /> 
    <input type="submit" value="Submit" /> 
</form> 
<?php 
if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    echo $_POST['test1'] . $_POST['test2']; 
} 
?> 

我希望这是清楚什么,我试图做的。

感谢您的帮助。

+3

不同形式背后的目的是什么? – Nick 2014-12-02 16:54:56

+0

为什么当你不使用“提交”其中之一时,你需要两种形式。您是否无法将所有输入内容包含在单个表单中并使用提交? – 2014-12-02 16:55:29

+2

如果你真的想这样做,你应该使用JavaScript/AJAX。 – 2014-12-02 16:56:46

回答

3

一种可以解决在PHP端分离数据的问题的方法是将名称数组添加到输入中。例如:

<form name="form1" method="post"> 
    <input type="text" name="test[1]" /> 
    <input type="text" name="test[2]" /> 
    <input type="submit" value="Submit" /> 
</form> 

然后提交到一个PHP页面后,您可以通过访问它们:

if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    echo $_POST['test'][1] . $_POST['test2'][2]; 
} 

如果你绝对必须有独立的形式标记一些未知的原因,那么你也可以做这使用AJAX。向你的提交按钮添加一个类,然后使用vanilla JavaScript和/或jQuery将一个单击事件绑定到该事件,取消常规表单操作并发布到独立的php页面。 AJAX将返回你回写。这里是JavaScript的例子:

jQuery('.submit-button').click(function() { 

    //Find all input fields in the form and store them 
    var fields = jQuery(this).parent().find(':input').serializeArray(), 
     url = '/somepage/somepath/', 
     returnJSON, 
     ajaxRequestHandler; 

    //Stop the form from submitting 
    event.preventDefault(); 

    //Start AJAX request 
    ajaxRequestHandler = jQuery.ajax({ 
     type: "POST", 
     url: url, 
     data: fields 
    }); 

    //Error Hanlder 
    ajaxRequestHandler.fail(function (returnData) { 
     console.log('failure'); 
    }); 

    //Success Handler 
    ajaxRequestHandler.done(function (returnData) { 
     //Display a message to the html page. 
    }); 


}); 

下面是HTML:

<form name="form1" method="post"> 
    <input type="text" name="test1" class="submit-button" /> 

</form> 

<form name="form1" method="post"> 
    <input type="text" name="test2" /> 
    <input type="submit" value="Submit" class="submit-button" /> 
</form> 

你那么如果你使用MVC需要设置一个独立的PHP页面或新方法,在你的控制器。你还需要确保这个PHP页面是安全的。

+0

我没有Ajax知识,我很欣赏你的答案,我会尝试找出另一种解决方案,如果这不起作用,我会尝试你的答案。 我有一个PHP的while循环,它从数据库中获取东西,所以根据HTML 5条款和东西,表单中的所有东西都不会是正确的。 – Tom 2014-12-02 20:07:35