加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax请求验证登录名是否已注册

发布时间:2020-12-16 02:11:59 所属栏目:百科 来源:网络整理
导读:问题提出: 利用ajax请求来验证注册时选择的登录名是否已经被注册,问题是每次都会出现未注册,即使是数据库中已经存在有此登录名。 后台程序: @RequestMapping(value = "duplicate",method = RequestMethod.GET,consumes = MediaType.APPLICATION_JSON_VAL

问题提出:利用ajax请求来验证注册时选择的登录名是否已经被注册,问题是每次都会出现未注册,即使是数据库中已经存在有此登录名。

后台程序:

@RequestMapping(value = "duplicate",method = RequestMethod.GET,consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public ResponseEntity<Object> duplicate(@RequestParam(value = "loginName")                             String loginName) {
        try {
            UserDto userDto = developerService.findByLoginName(loginName);
            if (userDto == null) {
                userDto = new UserDto();
                userDto.setLoginName(loginName);
                return new ResponseEntity(userDto,HttpStatus.OK);
            } else {
                return new ResponseEntity(userDto,HttpStatus.OK);
            }
        } catch (CoreException e) {
            logger.error(e.getMessage());
            e.printStackTrace();
            return new ResponseEntity(null,HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }

后台请求接口:

url: "${ctx}/developer/duplicate",

约定格式:application/json

传输数据:

data: {"loginName": loginName},

验证登录名是否合法:

合法才提交请求验证登录名是否已注册,否则登录名不合法不能请求服务。

function checkLoginName(loginName){
        if(......){
         .........
         return false;
         }else if(duplicate(loginName)==true){
         ..........
         return false;
         }else{
          .......
          return true;
         }

}

当请求到检验是否重名的函数duplicate(loginName)时:

function duplicateLoginName(loginName) {
            var dup = false;
            $.ajax({
                type: "GET",url: "${ctx}/developer/duplicate",contentType: "application/json",dataType: "json",data: {"loginName": loginName},beforeSend: function () {
                    $("#loginNameTips").text("正在验证...").css("color","red");
                },error: function (data,XMLHttpRequest) {
                    $("#loginNameTips").text("×验证失败:").css("color",success: function (data) {
                    if (data.id == null)
                        dup = false;//未重名
                    else
                        dup = true;//重名
                }
            });
            return dup;
        }

理想结果:若重名,则该函数返回false,否则返回true

实际结果:如果重名,会执行dup=true,不重名,执行dup=false,但是返回的dup始终是初始化的值false,结果是无论重名与否,结果都显示不重名,为什么呢?

原因分析:ajax默认是异步传输,也就是说,方法并没有等待 success:function(data) 回调函数执行完,就已经向下执行了。这就是dup一直未初始化值false的原因所在。

解决办法:利用同步传输,添加上async:false即可,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读