表单序列化正在发送数据

Form Serialization sending data

本文关键字:数据 序列化 表单      更新时间:2023-09-26

我有一个关于PHP/jQuery中表单序列化的问题。下面是我的代码:

    <form name="myForm" method="post" action="page.php">
      <table>
        <tr>
          <td>Field 1</td><td>Field 2</td><td>Field 3</td>
        </tr>
         <?php
          $i = 0;
         while ($tempInfo=mysql_fetch_array(query)) {
            $field1       =  $tempInfo['field1'];
            $field2       =  $tempInfo['field2'];
            $field3       =  $tempInfo['field3'];  
          ?>
           <tr>
              <td><input type="hidden value="<?php echo $field1?>"> name=testValue</td><td><?php echo $field2 ?></td><td><?php echo $field3?></td><td><input type="checkbox" name="myCheckboxes[]" id="myCheckboxes" value="getReport_<?php echo $i;?>" /></td></tr>
          <?php
              }
           ?>
        </table>
        <input id="submit" type="submit" name="submit" value="Submit" onclick="submitForm()" /></form><div id="myResponse"></div>

然后是jQuery代码:

    <script type="text/javascript">
       function submitForm() {
          var form = document.myform;
          var dataString = $(form).serialize();
          $.ajax({
               type:'POST',
               url:'report-gen.php',
               data: dataString,
               success: function(data){
                 $('#myResponse').html(data);
               }
            });
           return false;
           }
           </script>

问题是,正在发送数据,但只发送最后一行的数据,而不是基于复选框。如何确保发送的唯一数据是选中复选框的数据?

如果您有多个具有相同名称的字段,如果名称没有以[]结尾(而testValue没有),PHP将丢弃除最后一个字段之外的所有字段。重命名输入。

您可以将所有数据放在复选框中,并在返回时对其进行解析,而不是使用隐藏字段。例如,将值更改为:

value="getReport_<?php echo $i;?>|$field1"

要获得不同的值,请执行

list($report, $field1) = explode("|", $checkbox_value);