jQuery,AJAX表单处理 - 单选按钮值问题,

时间:2014-05-08 17:24:35

标签: php jquery ajax forms radio-button

我有以下表格 - 我的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(试图清除浏览数据等等......但仍无法正常工作)

有人可以指导我出错的地方吗?

非常感谢,

1 个答案:

答案 0 :(得分:1)

问题是您是否手动循环所有输入,无论是否选中单选按钮。因此,当您处于与第一个名称相同的第二个单选按钮时,您将覆盖之前的值。

你应该让jQuery使用:

来处理这个问题
data: $(this).serialize(),

您当然可以手动检查输入的类型以及是否也检查了它......

正如我在评论中提到的,每页只能使用一次ID,因为ID必须是唯一的,但与您的问题无关。