1、ajax.js代码如下:
var xhr;//定义ajax对象
//创建xhr
function createXHR(){
//ie
if (window.ActiveXObject) { //对应ie浏览器
var msxmls=['Msxml2.XMLHTTP','Microsoft.XMLHTTP'];
for (i = 0; i < msxmls.length; i++) {
try {
xhr=new ActiveXObject(msxmls[i]);
return ;
} catch (exception) {
continue;
}
}
}else if (window.XMLHttpRequest) { //火狐浏览器等
xhr=new XMLHttpRequest();
}else{
alert("您的浏览器版本过低请求不能够创建");
}
}
function checkName(){
var span=document.getElementById_x_x("msg");//用来显示服务器响应信息
span.innerHTML="验证用户...";
var name=document.getElementById_x_x("js-mobile_ipt").value;
// alert(name);
createXHR();
//连续调用checkNameCallback函数
xhr.onreadystatechange=checkNameCallback;
//发送ajax请求
xhr.open("get","isUserNameValid.action?userName="+name,true);
xhr.send(null);
}
var c=0;
function checkNameCallback(){
// alert(c++);
//当readyState==4及读取到post提交的正文才显示用户名是否被注册
if (xhr.readyState==4) {
if (xhr.status==200) {
///获取服务器相应文本
var ret=xhr.responseText;
var span=document.getElementById_x_x("msg");
if (ret=="error") {
span.innerHTML="用户名已存在!";
}else if(ret=="ok"){
span.innerHTML="用户名可用!";
}
}
}
}
2、action类:
@Override
public String execute() throws Exception {
ServletActionContext.getResponse().setContentType("text/javascript;charset=UTF-8");
//验证用户名是否被注册
if (userService.isUserNameValid(userName)) {
//请求响应数据
ServletActionContext.getResponse().getWriter().write("ok");
}
else
{
ServletActionContext.getResponse().getWriter().write("error");
}
return null;
}
3、struts.xml配置:
<!-- 验证用户名是否可用Action -->
<action name="isUserNameValid" class="com.nyist.cloud.action.ValidateUserNameAction" >
</action>
name="user.unickName" id="js-mobile_ipt" class="text" maxlength="11" οnblur="checkName();"/>
<font color="red">*</font>
<span id="msg">
<LABEL style="text-align: center;" ><s:fielderror escape="true" fieldName="user.nickName" theme="simple" cssStyle="color:red;font-size: 14px;font-style: inherit;"></s:fielderror>
</LABEL>