我有一个表单,其元素名称为多维数组,如
<form method="post" id="formDealOptions" name="formDealOptions">
<table>
<tr class="dealOptionRow saved">
<td>
<input type="text" name="dealOptionsGroup[1][dealOptionName]" value="dealOptionName1">
</td>
<td>
<input type="text" name="dealOptionsGroup[2][dealOptionName]" value="dealOptionName2">
</td>
</tr>
</table>
</form>
如果我使用普通表单提交发布此表单,$ _POST数组就像
Array(
'dealOptionsGroup' => Array( '1' => Array('dealOptionName' => dealOptionName1 )
'2' => Array('dealOptionName' => dealOptionName1 )
)
)
这很好,我使用这个数组结构创建了服务器端验证。但是当使用serializeArray()(如
)通过ajax调用提交相同的表单时var data = new Object();
data.postValues = $('#formDealOptions').serializeArray();
$.ajax({
type: "POST",
url: GLOBAL_BASE_PATH + '/deal/ajaxsaveDealOptions/',
data: data,
success: function (data) {//}
});
现在post数组就像
[postValues] => Array
(
[0] => Array
(
[name] => dealOptionsGroup[1][dealOptionName]
[value] => dealOptionName1
)
[1] => Array
(
[name] => dealOptionsGroup[2][dealOptionName]
[value] => dealOptionName2
)
)
有没有办法在正常形式的帖子中使用ajax发布数组。
答案 0 :(得分:1)
<form method="post" id="formDealOptions" name="formDealOptions">
<table>
<tr class="dealOptionRow saved">
<td>
<input type="text" name="dealOptionsGroup[1][dealOptionName]" id="aa" value="OptionName1">
</td>
<td>
<input type="text" name="dealOptionsGroup[2][dealOptionName]" value="OptionName2">
</td>
<td>
<input type="submit" name="forms" id="" value="save">
<input type="button" name="forms" id="submitButtonId" value="save">
</td>
</tr>
</table>
</form> <script type="text/javascript" src="jquery-1.7.2.js"></script>
<script type="text/javascript">
var frm = $('#formDealOptions');
frm.submit(function () {
$.ajax({
type: 'post',
url: 'test.php',
data: frm.serializeArray(),
success: function (data) {
alert(data);
}
});
return false;
});
</script>
test.php
---------
<?php
print_r($_REQUEST);
?>
答案 1 :(得分:0)
您可以使用这样的表单。然后发布值。
<form method="post" id="formDealOptions" name="formDealOptions">
<table>
<tr class="dealOptionRow saved">
<td>
<input type="text" name="dealOptionsGroup[dealOptionName][]" value="dealOptionName1">
</td>
<td>
<input type="text" name="dealOptionsGroup[dealOptionName][]" value="dealOptionName2">
</td>
</tr>
</table>
</form>
答案 2 :(得分:0)
不要序列化
$.ajax({
type: "POST",
url: GLOBAL_BASE_PATH + '/deal/ajaxsaveDealOptions/',
data:{
'data1':$('input[value="dealOptionName1"]').val(),
'data2':$('input[value="dealOptionName2"]').val(),
//.....
},
success: function (data) { }
});
在php中
<?php $_POST['data1']; //etc ?>