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

如何将文本输入与复选框值通过URL传递给fetch请求生成密码?

解决密码生成接口复选框参数传递错误问题

问题根源

你的代码存在两个核心问题:

  1. 错误赋值覆盖复选框状态:JS中使用document.getElementById("number").value = "True"这类赋值语句,会强制将复选框的value设为固定值,完全忽略用户是否勾选的实际状态。
  2. 参数格式不匹配接口要求:目标接口需要小写的true/false参数值,你代码里用了大写的"True",同时HTML里的复选框value存在拼写错误(ture→true)。

修正后的代码

HTML部分(修正拼写错误)

<div class="form-check-inline">
  <label class="form-check-label">
    <input type="checkbox" class="form-check-input" id="number" value="true">Numbers
  </label>
</div>
<div class="form-check-inline">
  <label class="form-check-label">
    <input type="checkbox" class="form-check-input" id="character" value="true"> Special characters
  </label>
</div>
<div class="form-check-inline">
  <label class="form-check-label">
    <input type="checkbox" class="form-check-input" id="uppercase" value="true">Uppercase
  </label>
</div>
<div class="passwordbox">
  <input id="passlen" class="pass-len-box" placeholder="Enter password length">
  <button class="generatorPass" id="genratorPass">Generate</button>
  <br>
  <p id="dispPassword"></p>
</div>

JavaScript部分(修复复选框状态获取逻辑)

document.querySelector("#genratorPass").addEventListener("click", () => {
  // 获取密码长度输入值
  const passLen = document.querySelector("#passlen").value;
  // 获取各复选框的勾选状态,转成接口需要的小写字符串
  const includeNumbers = document.getElementById("number").checked.toString();
  const includeChars = document.getElementById("character").checked.toString();
  const includeUppercase = document.getElementById("uppercase").checked.toString();
  
  request(passLen, includeNumbers, includeChars, includeUppercase);
});

const dispPasswordEl = document.getElementById("dispPassword");

function request(len, num, char, caps) {
  // 拼接符合接口要求的URL
  const url = `https://passwordinator.herokuapp.com?len=${len}&num=${num}&char=${char}&caps=${caps}`;
  fetch(url)
    .then(response => response.json())
    .then(data => {
      console.log(data.data);
      dispPasswordEl.textContent = data.data;
    })
    .catch(err => console.error("请求失败:", err)); // 增加错误处理
}

关键优化点

  • 改用checked属性判断复选框是否被勾选,不再强制设置value
  • 将布尔值转成小写字符串true/false,完全匹配接口参数要求
  • 增加错误处理,避免请求失败时无提示
  • 优化变量命名,提升代码可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:20:29