小白上线*^_^* 2024-05-07 22:21 采纳率: 100%
浏览 8
已结题

修改web前端代码,实现相应效果

img

  1. 对于以上改代码,应该如何修改,只现在实现了一点功能,控制台报错,各位友友们应该怎么做啊,才能实现最终图片效果呢,多谢解答😊 。 这个代码里面有json,js和ajax这些知识的应用,其中Ajax 实现登录验证效果
    页面和数据都准备好之后就可以编写 js 代码了,在 js 目录下新建一个“login.js”文件。用户信息验证是在点击提交按钮时发生的,所以需要给按钮添加点击事件。
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
    login {
      width: 400px;
      height: 300px;
      border: 1px solid #ffffff;
      margin: 100px auto;
      padding: 20px;
      text-align: center;
    }
    
    .logo {
      font-size: 30px;
      font-weight: bold;
      margin-bottom: 30px;
    }
    
    label {
      display: inline-block;
      width: 80px;
      text-align: right;
      margin-right: 10px;
    }
    
    input[type="text"], input[type="password"] {
      width: 200px;
      height: 30px;
      border-radius: 5px;
      border: 1px solid #ccc;
      padding-left: 5px;
    }
    
    span {
      color: red;
    }
    
    a#loginBtn {
      display: inline-block;
      width: 100px;
      height: 30px;
      line-height: 30px;
      text-align: center;
      background-color: #99004c;
      color: #fff;
      border-radius: 5px;
      margin-top: 20px;
    }
    
    a#loginBtn:hover {
      background-color: #999;
    }
    </style>
    <script>
        window.onload=function(){
            // 登录按钮 绑定点击事件
            var btn = document.getElementById("login");
            btn.onclick= function(){
                alert("1");
            }
        }
            // 1.new xmlhttprequest
            var xhr;
            xhr = new XMLHttpRequest();
            // 2.open
            xhr.open("GET","data.json",true);
            // 3.send
            xhr.send();
            // 4.statechange
            xhr.onreadystatechange = function(){
                if(xhr.readyState==4 && xhr.status==200){
                    // 获取结果
                    var result = JSON.parse(xhr.responseText);
                for(let i=0;i<result.length;i++){
                    var p=resulr[i];
                    if(username_value==p.user && pwd_value==p.password){
                        res=true;
                    }
                  }
                if(res==true){
                alert("success");
                }else{
                alert("failed");
                }
                }
            }
    </script>
</head>
<body>
    
    <!DOCTYPE html> 
    <html> 
         <head> 
              <meta charset="UTF-8"> 
              <title>影城-用户登录界面</title> 
              <link href="css/login.css" rel="stylesheet" type="text/css" /> 
              <script src="js/login.js"></script> 
         </head> 
         <body> 
xx 国际影城
<label>用户名:</label> <input type="text" name="userName" value="" />
<label>密   码:</label> <input type="password" name="password" value="" />
登录

还不是我们的会员?立即注册

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-07 22:21
    关注

    引自免费微信小程序:皆我百晓生

    首先,让我们分析一下提供的代码片段,并逐步修复它以达到预期的效果。这里有一个详细的步骤和代码更新:

    1. 首先,我们需要获取输入框中的用户名(username)和密码(password)值。
    2. 在创建XMLHttpRequest对象后,我们需要在打开连接之前设置onreadystatechange事件处理器。
    3. 当状态改变为4(完成),且状态码为200(成功)时,解析JSON响应并进行比较。
    4. 将用户名和密码的输入值存储在变量中,以便稍后在验证逻辑中使用。
    5. 使用HTML模板字符串将动态内容插入到页面上。

    下面是修改后的代码:

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>影城-用户登录界面</title>
        <style>
            /* ...此处省略样式 */
        </style>
        <script>
            window.onload = function () {
                const usernameInput = document.getElementById("username");
                const passwordInput = document.getElementById("pwd");
                const loginBtn = document.getElementById("loginBtn");
    
                // 为登录按钮绑定点击事件
                loginBtn.addEventListener('click', function (event) {
                    event.preventDefault(); // 阻止表单默认提交行为
    
                    const username_value = usernameInput.value.trim();
                    const pwd_value = passwordInput.value.trim();
    
                    // 新建XMLHttpRequest对象
                    var xhr = new XMLHttpRequest();
                    // 设置onreadystatechange事件处理器
                    xhr.onreadystatechange = function () {
                        if (xhr.readyState === 4 && xhr.status === 200) {
                            // 获取结果
                            let result = JSON.parse(xhr.responseText);
    
                            let res = false;
                            for (let i = 0; i < result.length; i++) {
                                let p = result[i];
                                if (username_value === p.user && pwd_value === p.password) {
                                    res = true;
                                    break;
                                }
                            }
    
                            if (res) {
                                alert("success");
                            } else {
                                alert("failed");
                            }
                        }
                    };
    
                    // 打开连接
                    xhr.open("GET", "data.json", true);
                    // 发送请求
                    xhr.send();
                });
            };
        </script>
    </head>
    <body>
        <div class="login">
            <h1 class="logo">xx国际影城</h1>
            <form id="loginForm">
                <label for="username">用户名:</label><input type="text" id="username" name="username" required/>
                <label for="pwd">密码:</label><input type="password" id="pwd" name="pwd" required/>
                <span id="error" style="display:none;">用户名或密码不正确</span>
                <a id="loginBtn" href="#">登录</a>
                <br/>
                <a href="#">还不是我们的会员?立即注册</a>
            </form>
        </div>
    
        <script src="js/login.js"></script>
    </body>
    </html>
    

    这个版本的代码应该能正常工作。注意,为了使此代码正常运行,你需要确保有名为"data.json"的文件,并且该文件包含了格式正确的JSON数据,例如:

    [
        {"user": "testUser", "password": "testPassword"},
        {"user": "anotherUser", "password": "anotherPassword"}
    ]
    

    这只是一个简单的示例,实际应用中应使用服务器端进行验证,而不是客户端。此外,密码通常应该进行加密处理,这里仅作演示用途。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月9日
  • 已采纳回答 5月8日
  • 修改了问题 5月7日
  • 创建了问题 5月7日