我对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>
问题是,正在发送数据,但只发送最后一行的数据,而不是基于复选框。如何确保仅发送的数据是选中了复选框的数据?
谢谢你, 凯文戴维斯
答案 0 :(得分:1)
如果您有多个具有相同名称的字段,那么如果该名称未以[]
结尾(testValue
没有),PHP将丢弃除最后一个之外的所有字段。重命名您的输入。
答案 1 :(得分:0)
您可以将所有数据放在复选框中并在返回时解析它,而不是使用隐藏字段。例如,将值更改为:
value="getReport_<?php echo $i;?>|$field1"
获取不同的值
list($report, $field1) = explode("|", $checkbox_value);