2012-11-29 61 views
1

我有一个元素名称为多维数组一样Ajax表单后与表单元素的名称作为数组

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

这很好,我用这个数组结构创建了服务器端验证。但submmit通过Ajax调用使用serializeArray()相同的形式像

var data = new Object(); 
data.postValues = $('#formDealOptions').serializeArray(); 
$.ajax({ 
    type: "POST", 
    url: GLOBAL_BASE_PATH + '/deal/ajaxsaveDealOptions/', 
    data: data, 
    success: function (data) {//} 
}); 

当现在接线柱阵列就像

[postValues] => Array 
    (
     [0] => Array 
      (
       [name] => dealOptionsGroup[1][dealOptionName] 
       [value] => dealOptionName1 
      ) 

     [1] => Array 
      (
       [name] => dealOptionsGroup[2][dealOptionName] 
       [value] => dealOptionName2 
      ) 
    ) 

有没有办法使用AJAX在正常的表单提交相同的发布阵列。

回答

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> 
+0

但使用的是正常形式交阵列结构进行服务器端验证。我正在尝试使用ajax发布多维表单,使用与正常表单相同的形式发布 –

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


?> 
相关问题