2010-12-02 114 views
1

所以假設我有3種形式AJAX通過jQuery提交多種形式

<form name="form1"> 
<input name="input"></input> 
<submit></submit> 
</form> 

<form name="form2"> 
<input name="input"></input> 
<submit></submit> 
</form> 

<form name="form3"> 
<input name="input"></input> 
<submit></submit> 
</form> 

每個形式都有自己的提交按鈕

現在假設我有另一種形式

<form id="submitAll"> 
<submit value="submit all"></submit> 
</form> 

,其唯一的功能是提交所有其他3種形式同時....現在這裏是約束:

  1. 當submitAll被提交時,它必須使用Ajax並將來自所有其他3個表單的輸入數據轉發到processor.php,最好通過POST
  2. processor.php需要能夠區分哪些輸入會轉到哪個形式...然後分別處理每個表單的輸入

我的問題是....什麼是最好的方式使processor.php能夠區分哪些輸入屬於哪種形式... ..

我以前的嘗試是使用jquery的序列化來序列化所有3種形式的輸入,但是然後它會將所有輸入合併爲一個字符串,並且不會因爲表單中的輸入具有相同的名稱,字符串就像「input = blah & input = blah & input = blah」,我無法區分哪個輸入轉到哪個表單.....

它是高度優選的是具有在形成輸入具有相同的名稱,以便processor.php能夠順利執行

是否有遠,使POST字符串被作爲陣列或JSON或任何其他格式,使得處理器通過.php可以區分哪個輸入變爲哪個表單而不會使輸入名稱不同?記住它需要通過Ajax來做到這一點

在此先感謝!

回答

2

你爲什麼不使用的命名規則一樣

  • 名= 「Form1的[輸入]」
  • 名= 「窗體2 [輸入]」
  • 名= 「Form3 [輸入]」

然後做定期連載和$。員額,這將幫助你保持相同的命名約定在處理器循環

編輯:

<?php 
foreach($_POST as $form) { 
    // $form = array('input' => 'i am here') 
    processForm($form); // names are still the same for all forms 
} 
?> 
+0

如果你這樣做,它會被解析爲一個多維數組?所以假設$ post包含所有的post數據($ _POST),$ post [「form1」]是一個包含form1所有輸入的數組嗎?...所以$ post [「form1」] [「input」]將包含輸入值? – 2010-12-02 22:51:58

1

難道你不希望使用數組?輸入將按照它們被序列化的順序。

<input name="input[]" /> 
0
<form name="form1" class="postable"></form> 
<form name="form2" class="postable"></form> 
<form name="form3" class="postable"></form> 

的javascript:

$(document.ready(function(){ 
    $("a.submitforms").click(function(){ 
     $('form.postable').each(function(){ 
      Form = $(this); 
      payload = $(Form).serialize(); 

      //Send payload via Ajax. 
     }); 
    }); 
})); 

這僅僅是一種替代方法,但我Ish Kumar的方法同意!