注册页面对数据进行校验,Ajax的使用-数据唯一性

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="js/jquery-3.7.0.js"></script>
    <script>
        $(function () {
            var username_flag = false;
            var password_flag = false;
            //用户输入框失去焦点
            $("[name=username]").blur(function () {
                //获取输入框的值
                var usernameValue = $(this).val();
                //判空
                if (usernameValue == null || usernameValue == "") {
                    $("#span1").text("账号不能为空");
                } else {
                    //判长度
                    if (usernameValue.length < 5) {
                        $("#span1").text("账号不能少于5位");
                    } else {
                        //判断账号的唯一性
                        $.get("LoginServlet",{"username":usernameValue},function (date) {
                            console.log(date)
                            if (date) {
                                $("#span1").text("√");
                                $("#span1").css("color","green");
                                username_flag = true;
                            } else {
                                $("#span1").text("此账号已被注册过!请重新输入");
                            }
                        },"json");
                    }
                }
            });
            //密码输入框失去焦点
            $("[name=password]").blur(function () {
                var passwordValue = $(this).val();
                //判空
                if (passwordValue == null || passwordValue == "") {
                    $("#span2").text("密码不能为空");
                } else {
                    //判长度
                    if (passwordValue.length < 5) {
                        $("#span2").text("密码不能少于5位");
                    } else {
                        //判内容
                        var rule = /^\d*$/;
                        if (rule.test(passwordValue)) {
                            $("#span2").text("密码不能是纯数字");
                        } else {
                            $("#span2").text("√");
                            $("#span2").css("color","green");
                            password_flag = true;
                        }
                    }
                }
            });

            $("form").submit(function(){
                if(username_flag && password_flag){
                    alert("提交成功")
                    return true;
                }else{
                    alert("数据有误!")
                    return false;
                }
            });

        });
    </script>
</head>
<body>
<form>
    用户名:<input type="text" name="username"><span id="span1" style="color: red"></span><br>
    密码:<input type="password" name="password"><span id="span2" style="color: red"></span><br>
    <input type="submit" value="登录">
</form>
</body>
</html>
java 复制代码
package com.etime.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "LoginServlet", value = "/LoginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取名字
        String username = request.getParameter("username");
        boolean flag;
        //假设数据库只有admin用户
        if ("admin".equals(username)){
            //用户已经存在
            flag = false;
        } else {
            //用户不存在
            flag = true;
        }
        PrintWriter writer = response.getWriter();
        writer.print(flag);
        writer.close();
    }
}
相关推荐
子兮曰3 小时前
把 649 种文件格式塞进一个网页里:一个「文件不出浏览器」的预览器
前端·javascript·后端
paopaokaka_luck6 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
sm_926787056 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
IMPYLH6 小时前
HTML 的 <video> 元素
前端·html
溪语流沙7 小时前
【每天一个CSS | Day19】流光文字与一笔写成的手写签名
前端·javascript·css
逐光者9337 小时前
STM32——SPI 屏 · Flash · 高速
java·前端·stm32
To_OC7 小时前
同样是让 AI 写全栈,为什么别人一句话就够了
前端·前端框架·next.js
CDwenhuohuo7 小时前
electron pc项目打包成桌面端
前端·javascript·electron
前端大斗师7 小时前
「大于 1000」把 1000 元那单也算进去了:我在 Vue3 订单页对了 10 句话
前端·人工智能·typescript·大模型·原力计划
Jmyd01238 小时前
用 Web VR 引擎搭建 3D 虚拟展厅:从素材上云到多端实时渲染的完整数据链路
前端·3d·vr·三维数字化