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

发布于 2024-10-04 22:33:20 字数 1277 浏览 2 评论 0原文

http://www. position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/ 我正在使用此表单插件。我们可以在其中调用单独的函数以进行验证

    <input type="text" id  ="empno " class="validate['required',FuncCall[empnos]]">

“Funccall[empnos ]”,即文件 Jquery-validation-en.js 将调用名为 empvalidate() 的单独 JS 函数。

"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;
    }

上述函数 iam 无法返回 true 或 false,因为它具有匿名函数。 当状态为 true 时我如何返回 true,反之亦然。它总是返回 false

http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/ Iam using this form plugin.where we can call Separate function inorder to do validation

    <input type="text" id  ="empno " class="validate['required',FuncCall[empnos]]">

"Funccall[empnos]" which is File Jquery-validation-en.js will call separate JS function called 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;
    }

From The above function iam not able to return true or false as it has anoymous function.
How can i return true when the status is true and vice versa.It is always returning me false

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

反目相谮 2024-10-11 22:33:20

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
}

小心,我没有测试上面的代码,因此您需要了解每一行代码的原因。

Ajax method getJSON performs asynchronously, so your method returns 'exists' before it requested the server for a return value.
So you need to make your ajax request as async = false, like this:

UPD: Okay, see the full version of your function:

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
}

Take care, I did not test the code above, so you need to understand the reason of each line of the code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文