`
musuny
  • 浏览: 42239 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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

阅读更多

问题提出:利用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", "red");
                },
                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即可,

 

 

1
1
分享到:
评论

相关推荐

    PHP+Ajax网站开发典型实例

    实例33 删除会话中已注册变量 实例34 数据编码 实例35 简单购物车 第5章 PEAR和正则表达式实例 实例36 PEAR管理器安装及PEAR包常见操作 实例37 HTML QuickForm完成表单验证 实例38 Calendar仓ll建日历 实例39...

    FormAuthenticationViaAJAX:使用支持 AJAX 的 Web 服务对混合应用程序进行身份验证(表单身份验证)的 AppBuilder 示例

    在 AppBuilder 混合应用程序中通过 Ajax 请求进行表单身份验证 一个 AppBuilder 混合示例,它使用 ASP.Net 表单身份验证来控制对启用 asmx ajax 的 Web 服务方法的访问。 当表单身份验证会话超时但仅在调用受保护的 ...

    beerkip:关于如何构建与WordPress API同步的React Native应用程序的教程(用户身份验证和数据同步)

    要查看负责拦截AJAX请求和同步数据的WordPress插件,。 使用应用 下载并安装该应用。 您可以使用beerkip登录名和beerkip密码登录,以浏览,创建或编辑自己的啤酒。 产品特点 用户身份验证是的。 登录后,您可以...

    书籍:一个Java网络课程期末实训小项目,详细介绍见readme文件

    关键字:JSP,servlet,Ajax,jstl,JavaScript,注册,分页,购物车,增删改查 开发环境:Eclipse,MySQL 5.7,Tomcat 8.0 数据库表结构设计 图书表结构: 项目表结构: 订单表结构: userinfo表结构: 项目包...

    java web技术开发大全(最全最新)

    第6章 用Servlet和JSP实现注册登录系统 第2篇 Struts 2篇 第7章 编写Struts 2的第一个程序 第8章 Struts 2进阶 第9章 Struts 2的* 第10章 Struts 2的类型转换 第11章 Struts 2的输入校验 第12章 文件的上传和...

    java web开发技术大全

    第6章 用Servlet和JSP实现注册登录系统 第2篇 Struts 2篇 第7章 编写Struts 2的第一个程序 第8章 Struts 2进阶 第9章 Struts 2的* 第10章 Struts 2的类型转换 第11章 Struts 2的输入校验 第12章 文件的...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能:(1)博客的注册、登录验证功能(2) 网络用户通过关键字搜索博文功能(3) 最热门博客页面推荐浏览(4) 文章详细内容及相关评论显示(5) 博客...

    python入门到高级全栈工程师培训 第3期 附课件代码

    06 Ajax功能之dataType和traditional 第58章 01 今日内容概要 02 Ajax补充之serialize 03 分页功能介绍 04 分页基础知识 05 Django内置分页 06 扩展Django内置分页 07 自定义分页组件 08 DjangoForm组件初识 第59...

    [完整][中文][WEB安全测试].(美)霍普.扫描版.pdf

    10.1 观察实时的AJAX请求 213 10.2 识别应用中的JavaScript 214 10.3 从AJAX活动回溯到源代码 215 10.4 截获和修改AJAX请求 216 10.5 截获和修改服务器响应 218 10.6 使用注入数据破坏AJAX 220 10.7 使用注入XML破坏...

    ASP.NET3.5从入门到精通

    3.11.7 参数名 3.11.8 委托命名原则 3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第 4 章 ASP.NET 的网页代码模型及生命周期 4.1 ASP.NET 的网页代码模型 ...

    Ego:无任何框架与库 ~纯原生javascript打造~ 动漫网站Ego

    首页:登录框、注册框、表单验证、表单提交、级联选择器 作品列表页:分页器、修改作品名、删除作品 创建作品页:文件上传、上传进度显示、添加标签、删除标签 持续改进 将项目中涉及到的组件(级联选择器、分页器等

    ASP.NET 3.5 开发大全11-15

    3.11.7 参数名 3.11.8 委托命名原则 3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 ...

    ASP.NET 3.5 开发大全

    3.11.7 参数名 3.11.8 委托命名原则 3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 ...

    ASP.NET 3.5 开发大全1-5

    3.11.7 参数名 3.11.8 委托命名原则 3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 ...

    ASP.NET 3.5 开发大全word课件

    3.11.7 参数名 3.11.8 委托命名原则 3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 ...

    ASPNET35开发大全第一章

    3.11.7 参数名 3.11.8 委托命名原则 3.12 小议设计模式 3.12.1 什么是设计模式 3.12.2 为什么要使用设计模式 3.12.3 改装现有类 3.13 小结 第4章 ASP.NET的网页代码模型及生命周期 4.1 ASP.NET的网页代码模型 4.1.1 ...

    asoft签到管理系统tykq3.5_build20110125

    修复中文登录名用户无法正确保存视频签到的图片的BUG [2010-08-28] V3.3 正式版 build 20100831 特别重大更新-&gt; 加入了视频签到功能,杜绝代签现象。你可以在“系统设置”-&gt;“签到设置”中决定是否开启它,以适应...

Global site tag (gtag.js) - Google Analytics