springMVC——页面实现表单点击按钮后弹出提示框不跳转页面

    最近在做一个作业,涉及到了注册登录,然后想要实现点击注册表单的提交按钮后不跳转页面,并且弹出注册成功与否的提示框。由于本人比较菜,而且对前端的知识了解甚少,在经过漫长时间才找到解决的方法。

    在本次实例用到了ajax(第一次用ajax),首先先附上注册的表单代码(用的是模式框,为了记录一起附上了)

<!-- 我用的是模式框 -->
<div id="register" class="modal fade" tabindex="-1">
    <div class="modal-dialog" id="modal">
        <div class="modal-content">
            <div class="modal-body">
                <!-- 模式框右上角的按钮 -->
                <button class="close" data-dismiss="modal" id="close" onclick="reset('registerForm')">
                    <span>&times;</span>
                </button>
            </div>
            <div class="modal-title">
                <h1 class="text-center">注册</h1>
            </div>
            <div class="modal-body">
                <!-- 注册表单 -->
                <form class="form-group" id="registerForm" action="#" method="post" enctype="multipart/form-data" onsubmit="return false">
                    <div class="form-group">
                        <span class="glyphicon glyphicon-user"></span>
                        <label for="userIdForR">帐号</label>
                        <input class="form-control" type="text" name="userId" id="userIdForR"
                               placeholder="手机号码注册">
                    </div>
                    <div class="form-group">
                        <span class="glyphicon glyphicon-lock"></span>
                        <label for="password1ForR">密码</label>
                        <input class="form-control" type="password" name="password" id="password1ForR"
                               placeholder="至少6位且不多于20位的字母或数字">
                    </div>
                    <div class="form-group">
                        <span class="glyphicon glyphicon-lock"></span>
                        <label for="password2ForR">再次输入密码</label>
                        <input class="form-control" type="password" name="confirmPassword" id="password2ForR"
                               placeholder="至少6位且不多于20位的字母或数字">
                    </div>
                    <div class="form-group">
                        <span class="glyphicon glyphicon-ok"></span>
                        <label for="mail">邮箱</label>
                        <input class="form-control" type="email" name="mail" id="mail" placeholder="例如:[email protected]">
                    </div>
                    <div class="text-right">
                        <button class="btn btn-primary" type="button" id="submit" onclick="register()">提交
                        </button>
                        <button class="btn btn-danger" data-dismiss="modal" onclick="reset('registerForm')">取消</button>
                    </div>
                    <a href="" data-toggle="modal" data-dismiss="modal" data-target="#login">已有账号?点我登录</a>
                </form>
            </div>
        </div>
    </div>
</div>

     在上面需要注意的是form那里的设置,由于要用ajax,所以需要让原来表单的提交失效,所以需要要加上οnsubmit="return false" ,其它得也照抄吧。然后在提交按钮那里添加点击事件

    下面是js代码

function register() {
    //校验注册表单里的信息是否正确
    if (!validate())
        return;
    //registerForm为表单的id,formdata可以获取表单的数据,比较方便
    var form = new FormData(document.getElementById("registerForm"));
    $.ajax({
        type: "POST",//方法类型
        dataType: "json",//预期服务器返回的数据类型
        url: "/register",//要响应的url
        data: form,  
        async: false,   //false为同步,true为异步
        processData: false,
        contentType: false,
        success: function (data) {
            //表示注册不成功,由于控制器返回的是map,所以就可以用data[key]
            alert(data["warnMsg"]);
            if (result["warnMsg"].search("成功") != -1) {
                document.getElementById("registerForm").reset();
                //关闭窗口,close为模式框右上角按钮的id
                document.getElementById("close").click();
            }
        },
        error: function (result) {
            alert("出现异常");
            //刷新窗体
            window.location.href = window.location.href;
        }
    });
}

 控制器代码

    @RequestMapping("/register")
    //下面的注解用于将map打包发给ajax
    @ResponseBody
    public Map<String,String> HandleRegister(User user) {
        Map<String,String> model=new HashMap<>();
        if (插入不成功) {
            model.put("warnMsg", "该手机号码已注册,请查看号码是否输入正确或者选择忘记密码");
        } else {
            model.put("warnMsg","注册成功,可以进行登录啦!");
        }
        return model;
    }

按照上面的来写,就如愿以偿的实现了提交数据不跳转页面,局部刷新网页并跳出弹窗!!!

 参考链接:

https://blog.csdn.net/qq_41409120/article/details/90374690

https://www.cnblogs.com/han-1034683568/p/7199168.html

猜你喜欢

转载自blog.csdn.net/hmq1350167649/article/details/105874333