Ajax异步查询用户是否存在

码农公社  210.net.cn   210是何含义?10月24日是程序员节,1024 = 210、210既 210 之意。

Ajax就将信息发到了服务器去检查该用户名是否已经被注册了,这样如果用户名已经存在,

不用等用户将所有数据都提交就可以给出提示。采用这种方式大大改善了用户体验。


下面是用JS获取用户Id然后将其发送给UserValidate.jsp页面,

然后通过callback方法接收页面返回的消息并通知用户。


function validate(field) { 
  if (trim(field.value).length != 0) { 
    //创建Ajax核心对象XMLHttpRequest 
    createXMLHttpRequest(); 
      
    var url = "http://www.210.net.cn/UserValidate.jsp?userId=" + trim(field.value) + "&time=" + new Date().getTime(); 
      
    //设置请求方式为GET,设置请求的URL,设置为异步提交 
    xmlHttp.open("GET", url, true); 
      
    //将方法地址复制给onreadystatechange属性 
    //类似于电话号码 
    xmlHttp.onreadystatechange=callback; 
      
    //将设置信息发送到Ajax引擎 
    xmlHttp.send(null); 
  } else { 
    document.getElementById("spanUserId").innerHTML = ""; 
  } 
} 
  
function callback() { 
  //alert(xmlHttp.readyState); 
  //Ajax引擎状态为成功 
  if (xmlHttp.readyState == 4) { 
    //HTTP协议状态为成功 
    if (xmlHttp.status == 200) { 
      if (trim(xmlHttp.responseText) != "") { 
        //alert(xmlHttp.responseText); 
        document.getElementById("spanUserId").innerHTML = "<font color='red'>" + xmlHttp.responseText + "</font>"; 
      }else { 
        document.getElementById("spanUserId").innerHTML = ""; 
      } 
    }else { 
      alert("请求失败,错误码=" + xmlHttp.status); 
    } 
  } 
}



UserValidate.jsp页面接收用户Id并根据Id查询是否已存在,如果存在返回,不存在什么也不返回。


<% 
  String userId = request.getParameter("userId"); 
  if(UserManager.getInstance().findUserById(userId) != null) { 
    out.println("用户代码已经存在"); 
  } 
%>

当光标离开用户代码文本框触发检查方法。


<input name="userId" type="text" id="userId" size="10" maxlength="10"  value="<%=userId %>" onblur="validate(this)">


效果图

af.jpg


做Web开发要更多的考虑用户体验,多运用客户端验证和异步交互的方式可以有效提升用户体验。

我们的目标就是让用户满意,只有用户用着舒心,用户喜欢用我们做的东西,我们的劳动才有意义。  


细节决定成败,页面的各种提示都是很小的细节。

不要小看这些小细节,做好了可以为你带来更多的用户;做的不好很可能让用户不再使用。

码农们用心做好细节,让用户爱上我们的作品吧。


评论