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

Flask+JavaScript密码生成器:生成密码无法在网页显示

密码生成器网页显示问题修复

问题根源

你的代码里,显示密码的<p id="generated-password">被{% if password %}模板条件包裹了。初始加载页面时后端没有传password变量,导致这个<p>元素根本不会被渲染到DOM中。虽然AJAX请求能拿到密码,但JS找不到目标元素,自然没法更新页面显示。

修复步骤

  1. 调整HTML密码显示区域
    去掉模板条件判断,让显示密码的元素始终存在:

    <div>
        <h2>Your generated password:</h2>
        <p id="generated-password">---</p>
    </div>
    
  2. 简化JS的FormData逻辑
    表单本身已包含length和characters字段,无需重复append,优化代码:

    function generatePassword() {
        const form = document.getElementById('password-form');
        const formData = new FormData(form);
        
        fetch('/generate', {
            method: 'POST',
            body: formData
        })
        .then(response => response.json())
        .then(data => {
            console.log(data.password);
            document.getElementById('generated-password').innerText = data.password;
        })
        .catch(error => {
            console.error('Error:', error);
        });
    }
    

修改后的完整index.html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Password Generator</title>
</head>
<body>
    <h1>Password Generator</h1>
    
    <form action="/generate" method="POST" id="password-form">
        <label for="length">Password Length:</label>
        <input type="number" id="length" name="length" required><br><br>
        
        <label for="characters">Character Set:</label>
        <select id="characters" name="characters">
            <option value="letters">Letters</option>
            <option value="letters_digits">Letters and Digits</option>
            <option value="all">All Characters</option>
        </select><br><br>
        
        <input type="button" value="Generate Password" onclick="generatePassword()">
        
    </form>
  
    <br>
    <br>
        
    <div>
        <h2>Your generated password:</h2>
        <p id="generated-password">---</p>
    </div>


    <script>
        function generatePassword() {
            const form = document.getElementById('password-form');
            const formData = new FormData(form);
            
            fetch('/generate', {
                method: 'POST',
                body: formData
            })
            .then(response => response.json())
            .then(data => {
                console.log(data.password);
                document.getElementById('generated-password').innerText = data.password;
            })
            .catch(error => {
                console.error('Error:', error);
            });
        }
    </script>
</body>
</html>

完成上述修改后,点击按钮生成的密码即可正常显示在网页中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:04:56