[英]JQUERY: how to serialize input fields with same name
我有以下形式的表單,其中有許多相似類型的輸入字段具有相同的名稱(例如,“名稱”為10個字段,“地址”為10個字段)。 這些輸入字段將重復多少次,無法事先說明,因此無法為它們指定靜態的不同名稱(例如,“名稱1”,“名稱2”,“地址1”,“地址2”)。
問題:當我使用ajax post(序列化)發布數據時,它僅發布具有相同名稱的字段的第一個值(使用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.