我如何从这个JSON匿名函数返回true或false

时间:2010-11-27 18:44:44

标签: jquery jquery-selectors

http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/我使用这个表单插件。我们可以调用Separate函数进行验证

    <input type="text" id  ="empno " class="validate['required',FuncCall[empnos]]">
“Funccall [empnos]”这是文件Jquery-validation-en.js将调用单独的JS函数empvalidate()

"empnos" : {
        "nname":"empvalidate()",
        "alertText":"* This EMP NO  is not there "      
},  
function empvalidate(){
                var empno = $("#empno").val();
                if(empno!=''){
                    $.ajaxSetup ({cache: false});
                    $.getJSON("emp.php",{'param1' : $("#param1").val(),'empno' :$("#empno").val()},
                        function (data){
                              if(data['status']==="true"){
                              exists="true";
                             }else{
                             exists="false";
                             }
                    });
                }
                return exists;
    }

从上面的函数我不能返回true或false,因为它具有无穷大的功能。   如果状态为真,我怎么能返回true,反之亦然。它总是让我错误

1 个答案:

答案 0 :(得分:2)

Ajax方法getJSON异步执行,因此您的方法在请求服务器返回值之前返回“exists”。 因此,您需要将ajax请求设置为async = false,如下所示:

UPD:好的,请参阅功能的完整版:

function empvalidate() {
  var exists = false;             // default return value is false
  var empno = $("#empno").val();
  if (empno != '') {
    $.ajax({
      url: "emp.php",
      async: false,
      dataType: "json",
      data: {'param1': $("#param1").val(), 'empno': $("#empno").val()},
      success: function (data) {
        exists = data.status;     // set status of existence to outer variable
      }
    });
  }
  return exists;                  // return actual value
}

小心,我没有测试上面的代码,所以你需要了解每行代码的原因。