基于jQuery实现的Ajax 验证用户名唯一性

Posted CANYON

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于jQuery实现的Ajax 验证用户名唯一性相关的知识,希望对你有一定的参考价值。

JSP部分代码:

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <%@include file="/common/header.jsp"%>
    <title>用户管理</title>
    <script type="text/javascript">
        function doVerify(){
            //获取界面的账号
            var account =  $("#account").val();
            //获取账号后的提示信息文本
            var accountText = document.getElementById("accountText");
            //如果账号输入不为空,执行该方法
            if(account !=""){
                $.ajax({
                    url:"${basePath}nsfw/userAction_verifyAccout.action",//后台查询验证的方法
                    data:{"user.account": account},//携带的参数
                    type: "post",
                    success: function(msg){
                        //根据后台返回前台的msg给提示信息加HTML
                        if("true" !=msg){
                            // 账号已经存在
                            accountText.innerHTML = "<font color=\'red\'>抱歉,"+account+"已被注册,请更换!</font>"
                        }
                        else{
                            
                            // 账号不存在
                            accountText.innerHTML = "<font color=\'green\'>恭喜,"+account+"可以注册!</font>"
                        }
                    }
                });
            }
        }
    </script>
</head>
<body class="rightBody">
<tr>
            <td class="tdBg" width="200px">帐号:</td>
            <td><s:textfield name="user.account" id="account" onchange="doVerify()"/>
                <span id="accountText"></span>
            </td>
        </tr>
</body>

 

 

后台代码:

 action层代码:

    // 校验用户名唯一性
    public void verifyAccout() throws IOException {
        if (user !=null && StringUtils.isNotBlank(user.getAccount())) {
            
            List<User> list = userService.findObjectByAccountAndId(user.getId(), user.getAccount());
            String resultString = "true";
            if (list!=null && list.size()>0) {
                //说明账号存在
                resultString = "false";
            }
            //输出到界面
            HttpServletResponse response = ServletActionContext.getResponse();
            response.setContentType("text/html");
            ServletOutputStream outputStream = response.getOutputStream();
            outputStream.write(resultString.getBytes());
            outputStream.close();
        }
        
    }

Service层代码:

public List<User> findObjectByAccountAndId(String id, String account) {
        return userDAO.findObjectByAccountAndId(id, account);
    }

 

DAO层代码:

public class UserDAOImpl extends BaseDaoImpl<User> implements UserDAO {
    /**
     * 校验账号唯一性
     */
    @Override
    public List<User> findObjectByAccountAndId(String id, String account) {
        StringBuilder hqlStr = new StringBuilder("FROM User t WHERE t.account = ?");
        if (StringUtils.isNotBlank(id)) {
            hqlStr.append(" AND t.id=?");
        }
        Query query = getSession().createQuery(hqlStr.toString());
        query.setParameter(0, account);
        if (StringUtils.isNotBlank(id)) {
            query.setParameter(1, id);
        }
        
        return query.list();
    }

 

效果图:

 

以上是关于基于jQuery实现的Ajax 验证用户名唯一性的主要内容,如果未能解决你的问题,请参考以下文章

JQuery Validate插件如何自定义验证方法(结合ajax实现数据库的查重)

如何使用 jQuery ajax() 方法异步提交 验证用户登录

Django1.7+JQuery+Ajax集成小例子

jQuery 验证器和使用 AJAX 的自定义规则

IT兄弟连 JavaWeb教程 jQuery对AJAX的支持经典案例

ajax验证用户唯一性