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

これは問題ありません。この配列構造を使用してサーバー側の検証を作成しました。しかし、serializeArray() のような ajax 呼び出しを介して同じフォームを送信する場合

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 を使用して配列を投稿する方法はありますか。

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

シリアライズしない

$.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 に答える
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 に答える