写了个表单验证js代码如下:
function CheckUserName(){
var username = $("#username").val();
$.get("b.php",{name:username},
function (data){
if(data == 1){
$("#warnning").html("<fontcolor=#FF3300>Account isused.</font>");
return false;//为啥不管用捏?
} else {
$("#warnning").html("<fontcolor=#00CC66>You canregister.</font>");
return true;//为啥不管用捏?
}
}
);
}
原因:逻辑没弄清楚,要将ajax设置为同步的,需要使用$.ajax,$.get默认是异步的,并且不是在回调函数内return,而是在CheckUserName函数中声明一个变量来接受回调函数的返回值,然后CheckUserName返回这个值。
修改后的代码:
function CheckUserName(){
var username = $("#username").val();
var result=false;
$.ajax({async:false//要设置为同步的,要不CheckUserName的返回值永远为false
,url:'b.php',data:{name:username}
,success:function(data){
if(data == 1){
$("#warnning").html("<fontcolor=#FF3300>Account isused.</font>");
result=false;
} else {
$("#warnning").html("<fontcolor=#00CC66>You canregister.</font>");
result=true;
}
}});
return result;//==========这里才是CheckUserName的返回值,回调函数返回值没有意义
}
OK! 测试一下,没问题了!