You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在document.ready中获取嵌套结构的单选按钮值并传给router.post?

问题:获取单选按钮值并传递给后端POST请求

我是做数据工程的,对Web开发不太熟。现在页面上有一组单选按钮,想获取选中的值来执行不同的SQL查询,但试了几种方法都没用,console.log也没输出,最终需要把这个值传给router.post函数。

页面中的单选按钮代码

<div class="mb-5 mt-3">
    <label class="fs-6 form-label fw-bold m-darkgreen text-dark">Ranking
        Parameter</label>
    <div class="nav-group nav-group-fluid">
        <label>
            <input name = "Prioritize" type="radio" class="btn-check" name="type" value="Size"
                checked="checked" id="PriorityBySize">
            <span
                class="btn btn-sm btn-color-muted btn-active btn-active-primary fw-bold px-4">Size</span>
        </label>
        <label>
            <input name = "Prioritize" type="radio" class="btn-check" name="type" value="Vulnerability" id="PriorityByVulnerability">
            <span
                class="btn btn-sm btn-color-muted btn-active btn-active-primary fw-bold px-4">Vulnerability</span>
        </label>
    </div>
</div>

我尝试过的无效代码

// 尝试1:初始判断选中状态
if ($("#PriorityByVulnerability").is(":checked")) {
    var priorityText = "Vulnerability"
} else {
    var priorityText = "Size"
}
console.log(priorityText)

// 尝试2:监听change事件
$("input[name='Prioritize']").on("change", function() {
    var priorityText = $('input[name="Prioritize"]:checked').val();
    console.log("the sign is: " + sign); // 想让sign等于选中的单选按钮值
});

// 尝试3:绑定div的change事件
priorityText = $("#mb-5 mt-3").change(function() {
    if ($(this).is(':checked')) {
        alert($(this).val())};
    })

问题原因及解决步骤

1. 修复HTML的单选按钮分组错误

你的单选按钮重复设置了name="Prioritize"和name="type",单选按钮是靠相同name值实现分组互斥的,这会导致选择逻辑混乱。删掉其中一个name属性,统一用name="Prioritize":

<!-- 修正后的Size单选按钮 -->
<input name="Prioritize" type="radio" class="btn-check" value="Size" checked="checked" id="PriorityBySize">

<!-- 修正后的Vulnerability单选按钮 -->
<input name="Prioritize" type="radio" class="btn-check" value="Vulnerability" id="PriorityByVulnerability">

2. 修正JavaScript的错误逻辑

  • 尝试2里的console.log用了未定义的变量sign,应该改成priorityText;
  • 尝试3里的选择器$("#mb-5 mt-3")错误:mb-5 mt-3是class不是id,而且div不会触发change事件,必须监听单选按钮;
  • 所有代码要放在$(document).ready()里,确保DOM加载完成后再执行:
$(document).ready(function() {
    // 获取初始选中值
    let priorityText = $('input[name="Prioritize"]:checked').val();
    console.log("初始选中值:", priorityText);

    // 监听单选按钮切换事件
    $("input[name='Prioritize']").on("change", function() {
        priorityText = $('input[name="Prioritize"]:checked').val();
        console.log("当前选中值:", priorityText);
    });

    // 示例:点击提交按钮时把值传给后端
    $("#submitBtn").on("click", function() {
        // 用AJAX发送POST请求到对应路由
        $.post("/your-route-path", { priority: priorityText }, function(response) {
            console.log("后端响应:", response);
        });
    });
});

3. 后端接收值(Express示例)

如果后端用Express,router.post可以这样获取前端传的值:

router.post('/your-route-path', (req, res) => {
    const priority = req.body.priority;
    // 根据选中值执行对应SQL查询
    if (priority === 'Size') {
        // 执行Size相关查询逻辑
    } else if (priority === 'Vulnerability') {
        // 执行Vulnerability相关查询逻辑
    }
    // 返回结果给前端
    res.send({ success: true, data: queryResult });
});

内容的提问来源于stack exchange,提问作者mkw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 01:31:21