登录用户名 中英文均可 (不超过8个汉字或16个字符)
电子邮件 重要!忘记密码可以用此找回
登录密码 数字、字母、下划线组合 (6至16位字符)
登录密码再次确认 麻烦再重复一次你刚刚填的密码

前端技术
jquery的ajax return问题
作者:魏泽言 发布时间:2010-08-20 15:53:39

 

一般注册会员的表单内都包含Email验证,这块需要ajax支持,这里我使用jquery 库,但是其ajax保持设置的话,我们只有在判断请求成功和失败李执行相应的回调,但是如果我把这个$.ajax() 封装到函数内,我想通过ajax返回状态和数据类型对该函数返回相应的值,作为外部接口调用,函数内的ajax实现一般我们都这样做:

 

function xxx(){

var ajaxEmailIsChecked=false;

 $.ajax({
    type:"post",
    url:"jfk.ui.formValidate/checkemail.php",
   
    data:{email:val},
    success:function(data){
     if(data.state===true){
      next.show().html("该email可以使用").addClass("rightstyle");
      ajaxEmailIsChecked=true;
      return true;
     }else{
      next.show().html(data.msg).removeClass("rightstyle");
      ajaxEmailIsChecked=false;
      return false; 
     }; 

   return ajaxEmailIsChecked;

}

 

但是出乎意料的是,外部调用该接口后,结果并没有符合我们的意愿表情6,原因是jquery.ajax 内的async的属性默认值是true,即为异步,这样的话,后面的代码都不会执行,而是指向其内部的回调,

设为false也就是同步后,ajax下面的语句都可以一一执行表情30了!

 

演示地址:

 

http://designcss.org/jquery-plugin/jfk/jfk.ui.formValidate2.html

 

或者看代码(ajax for email 的路径可能出错,自己修改好了):

jquery的ajax return问题的相关评论

文明社会,从理性发言开始。谢绝地域攻击。