我有以下表格 - 我的A.php中有2个单选按钮
<form action="form_processing.php" method="post" id ="myForm">
<div class="radio-inline">
<label>
<input type="radio" name="direction" id="direction" value="up" checked>Up
</label>
</div>
<div class="radio-inline">
<label>
<input type="radio" name="direction" id="direction" value="down" >Down
</label>
</div>
<input type="hidden" name="status" value="false">
<br/>
<button type="submit" name="sub" id="sub">Submit</button>
</form>
然后我得到了以下jQuery A.js,
$('#myForm').on('submit', function(){
var that = $(this),
url = that.attr('action'),
type = that.attr('method'),
data = {};
that.find('[name]').each(function(index, value){
var that = $(this),
name = that.attr('name'),
value = that.val();
data[name] = value;
});
$.ajax({
url: url,
type: type,
data: data,
success: function(response){
console.log(response);
}
});
return false;
});
然后在我的form_processing.php上,我已经
了<?php
print_r($_POST);
?>
当我监控我的控制台时,无论我做什么,我总是最终得到......
Array
(
[direction] => down
[status] => false
)
我花了两天的时间试图弄清楚但是......无法找到问题的原因,为什么无线电的价值没有更新......
更具体一点 - 适用于IE10 / 11,不适用于chrome(试图清除浏览数据等等......但仍无法正常工作)
有人可以指导我出错的地方吗?
非常感谢,
答案 0 :(得分:1)
问题是您是否手动循环所有输入,无论是否选中单选按钮。因此,当您处于与第一个名称相同的第二个单选按钮时,您将覆盖之前的值。
你应该让jQuery使用:
来处理这个问题data: $(this).serialize(),
您当然可以手动检查输入的类型以及是否也检查了它......
正如我在评论中提到的,每页只能使用一次ID,因为ID必须是唯一的,但与您的问题无关。