表格序列化发送数据

时间:2015-03-23 21:28:46

标签: javascript php jquery

我对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>

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

谢谢你, 凯文戴维斯

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

获取不同的值

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