2014-12-02 119 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

相關問題