日期:2014-05-16  浏览次数:20771 次

如何用jquery的$.ajax校验用户名,必须返回boolean类型
function validateEnameExsit() {
var ename = $("#ename").val();
if($.trim(ename)=='') {
    $("#result").attr('color','#FF0000'); 
$("#result").html('用户名不能为空');
return false;
}else{
$.ajax({
url : "empManagerAction!validateEname.do",// 后台处理程序
type : "post",// 数据发送方式
dataType : "json",// 接受数据格式
data : "employeeForm.ename="+ename,// 要传递的数据
cache: false,//禁用缓存
// 回传函数
success : function(responsedata) {
if(responsedata=='0'){
    $("#result").attr('color','B3E6DF'); 
$("#result").html('恭喜!该用户名还未被注册!');
return true;
}else if(responsedata=='1'){
$("#result").attr('color','#FF0000');
$("#result").html('对不起!用户名已存在!');
return false;
}
}
});
}
}

大家帮我看看怎么让这个方法返回boolean类型,现在validateEnameExsit方法接收不到 sucess回调函数的结果,怎么才能接受到$.ajax的回调函数判断结果,以便在提交的时候进行校验呢
------解决方案--------------------
你可以设置一个变量,返回在ajax方法里赋值
------解决方案--------------------

首先我可以明确的告诉你,这样是返回不了值的。jquery的方法,返回对象都是jquery的类型
它是一个chain的链。所有的jquery都有自己的返回值,用户不能指定返回值。这样就打断了jquery的
chain规则。
解决方案很多,提供以下几个:
1、在ajax方法外面定义临时遍历,接收boolean值也就是success中的值,这种方式需要同步才能接收到值
   因为ajax不会等这个方法运行完了才执行下面的代码的,当然可以用setTimeout延时下
2、可以把你的值放在$.dada()的缓存中保存;如:$("div").data("temp", true);alert($("div").data("temp"));
3、可以设置在属性中保存,然后取到。如果不想要了还可以删掉
$(this).attr("temp", true);
var temp = false;
$.ajax({
    url : "empManagerAction!validateEname.do",// 后台处理程序
    type : "post",// 数据发送方式
    dataType : "json",// 接受数据格式
    data : "employeeForm.ename="+ename,// 要传递的数据
    cache: false,//禁用缓存
    // 回传函数
    success : function(responsedata) {
        if(responsedata=='0'){
            $("#result").attr('color','B3E6DF'); 
            $("#result").html('恭喜!该用户名还未被注册!');
            //return true;
            temp = true;//$("#result").attr("temp", true);
        }else if(responsedata=='1'){
            $("#result").attr('color','#FF0000');
            $("#result").html('对不起!用户名已存在!');
            //return false;
            temp = false;//$("#result").attr("temp", false);
        }
    }
});
alert($("#result").attr("temp"));//这样就可以取值了