2014-06-09 64 views
2

我具有以下形式,它具有許多具有相同名稱的相似類型的輸入字段(例如,'name'爲10個字段,'address'爲10個字段)。這些輸入字段將重複多少次,不能在之前說過,因此它們不能被賦予靜態不同的名稱(例如'name1','name2','address1','address2')。JQUERY:如何序列化具有相同名稱的輸入字段

問題:當我使用ajax post(序列化)發佈數據時,它只發布第一個具有相同名稱的字段值(用php接收)。

要求:

  1. 我怎樣才能得到所有的輸入數據公佈正確?
  2. 最好的方法名稱這樣的輸入字段,包含類似的數據用於捕獲這些數據與PHP(形式是在PHP中生成的)?

示例代碼:

<form name="content"> 
    <table> 
     <tr> 
     <td> 
     <input name="full_name" type="text" /> 
     </td> 
     <td> 
     <input name="address" type="text" /> 
     </td> 
     </tr> 
     <tr> 
     <td> 
     <input name="full_name" type="text" /> 
     </td> 
     <td> 
     <input name="address" type="text" /> 
     </td> 
     </tr> 
    </table> 
    </form> 
+0

重複? http://stackoverflow.com/questions/2627813/how-to-get-an-array-with-jquery-multiple-input-with-the-same-name – subhaze

回答

3

我覺得你的情況,你可以使用$.serializeArray()

var data = $('form[name="content"]').serializeArray(); 

這會產生這樣的事情:

data = [ 
    { 
     name : "full_name", 
     value : "thefieldvalue" 
    }, 
    { 
     name : "address", 
     value : "theaddressvalue" 
    }, 
    ..... 
]; 

請參閱本:

data:$('form[name="content"]').serializeArray()+'&request=insert_invoice' 

不是一個正確的方式,而不是發送數據,你可以用下面這樣試試:

data:{ 
    frmvalues : $('form[name="content"]').serializeArray(), 
    request:insert_invoice 
} 
+0

data:$('form [name =「content」 ]')。serializeArray()+'&request = insert_invoice'***以下僅發佈「request = insert_invoice」。任何想法,爲什麼? – origin

+0

@origin你可以看看更新的發送數據的方式。你應該發送一個包含「{key:value}」對象的對象。 – Jai

+0

由於BRO,但與上述情況,我得到以下輸出而我使用的PHP的print_r() - '陣列 ( [請求] => insert_invoice )' – origin

3
<input name="full_name[]" type="text" value="foo" /> 
<input name="full_name[]" type="text" value="bar" /> 

在PHP這將是:

Array (
    full_name => Array (
     0 => foo 
     1 => bar 
    ) 
) 
+1

問題是關於JQuery,而不是PHP – Hittz

+0

@Hittz,問題是關於如何使用jQuery發送序列化數組,但它可以在純HTML中實現。 PHP只是爲了在服務器端展示示例。 – barell

0

你必須ser ialize數據並通過ajax發送。在php 一邊反序列化數據並通過這個函數格式化得到 輸出描述了我上面的註釋。沒有它,它不會 返回所需的輸出。

public function serializedFormDatajQuery2Array($serializedArr){ 
        $aFormData = array(); 
        foreach($serializedArr as $aRow){ 

        if(isset($aFormData[$aRow['name']]) && !is_array($aFormData[$aRow['name']])){ 
         $sValue = $aFormData[$aRow['name']]; 
         $aFormData[$aRow['name']] = array(); 
         $aFormData[$aRow['name']][] = $sValue; 
         $aFormData[$aRow['name']][] = $aRow['value']; 
         continue; 
        } 

           if(is_array($aFormData[$aRow['name']])){ 
              $aFormData[$aRow['name']][] = $sValue; 
              continue; 
           } 

        $aFormData[$aRow['name']] = $aRow['value']; 
        } 
          return $aFormData; 
      } 
相關問題