簡體   English   中英

JQUERY:如何序列化具有相同名稱的輸入字段

[英]JQUERY: how to serialize input fields with same name

我有以下形式的表單,其中有許多相似類型的輸入字段具有相同的名稱(例如,“名稱”為10個字段,“地址”為10個字段)。 這些輸入字段將重復多少次,無法事先說明,因此無法為它們指定靜態的不同名稱(例如,“名稱1”,“名稱2”,“地址1”,“地址2”)。

問題:當我使用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>

我認為在您的情況下,您可以使用$.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
} 
<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
    )
)

您必須序列化數據並通過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;
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM