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

Posted

技术标签:

【中文标题】jQuery、AJAX 表单处理 - 单选按钮值问题,【英文标题】:jQuery, AJAX form processing - Radio button value issues, 【发布时间】:2014-06-26 05:55:56 【问题描述】:

我有以下表格 - 我的 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
)

我花了 2 天时间试图弄清楚,但是.. 找不到问题的原因,为什么收音机的值没有更新....

更具体地说 - 适用于 IE10/11,不适用于 chrome(试图清除浏览数据等...仍然无法正常工作)

有人可以指导我哪里出错了吗?

非常感谢,

【问题讨论】:

您应该从摆脱双重 ID 开始。 ID 必须是唯一的。 照@jeroen 所说的去做,你的浏览器控制台是否有任何错误?您能否打开浏览器的 net 选项卡并查看请求,以便查看在 POST 中提交了哪些值 谢谢你指出重复的ID,我去删除它们。 【参考方案1】:

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

你应该让 jQuery 来处理这个问题:

data: $(this).serialize(),

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

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

【讨论】:

哦,是的! - 一切突然变得如此清晰 :-),还尝试使用 serialize() 并且效果很好!!。非常感谢。

以上是关于jQuery、AJAX 表单处理 - 单选按钮值问题,的主要内容,如果未能解决你的问题,请参考以下文章

如何使用localstorage / ajax jquery从第一页到第二页获取单选按钮值

Rails 5 ajax 表单:单击 Ajax 中的 2 个单选按钮之一提交表单

jquery 获取一组元素的选中项 - 函数jquery获取复选框值jquery获取单选按钮值

带有单选按钮的 PHP 邮件表单使用 AJAX 发送

通过 AJAX 更新单选按钮更改的表单值

如何以在 php 中作为字符串回显的形式填充单选按钮?