2014-06-09 32 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; 
      } 
相关问题