Ajax与js同步问题

来源:互联网 发布:ep8数据库架设 编辑:程序博客网 时间:2024/05/16 07:03

因为程序需要,.ajaxValidator验证无效,只好用.functionValidator。使用如下:

.functionValidator({fun:function(val){
 /*//验证测试代码
 if(val == "158****8989"){
  return "验证不通过";
 } else {
  return true;
 }  
 */

 var url = "${path}//blacklist.do?method=checkBlacklist&blackAdd.phone="+val;
 $.ajax({
  type: "post",
  url: url,
  async: false,     //是否同步执行
  success:function(result){
   if (result=="true"){
        return true;
   } else {
        return "验证不通过";
   }
  }
 });
 
}});

上面注释掉的部分(验证测试代码),执行正常的,但一放到Ajax中,验证就出现异常,还没等取到Ajax返回值,验证已结束。介于不能取得Ajax的返回值,代码做了如下改正:

//获取Ajax返回值函数

function getAjaxReturn(phone) {
  var bol=false;
  var url = "${path}//blacklist.do?method=checkBlacklist&blackAdd.phone="+phone;
  $.ajax({
   type: "post",
   async:false, //同步执行
   url: url,
   success:function(msg){
    if (msg=="true"){
     bol = true;
    }
   }
  });
  return bol;
 }

//functionValidator验证
.functionValidator({fun:function(val){
       if (getAjaxReturn(val)) {
              return true;
       } else {
              return "验证不通过";
       }
 }});

这下验证就正常了,效果同验证测试代码。

原创粉丝点击