1

我有一个元素名称为多维数组的表单,例如

 <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 )
                             )
  )

这很好,我已经使用这个数组结构创建了服务器端验证。但是什么时候通过 ajax 调用使用 serializeArray() 提交相同的表单

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 发布数组,就像普通形式的帖子一样。

4

3 回答 3

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);


?>
于 2012-12-01T04:13:36.883 回答
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>
于 2012-11-29T09:58:03.280 回答
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 ?>
于 2012-11-29T09:59:43.393 回答