【问题标题】:jQuery AJAX throws error even when it returns truejQuery AJAX 即使返回 true 也会抛出错误
【发布时间】:2011-06-09 05:57:25
【问题描述】:

我正在 jquery.validate 插件的 addMethod 中检查 AJAX。即使 AJAX 调用返回 true,也会显示错误。

这是代码:

$.validator.addMethod("checkMail", function(value, element) {
        var email_id = value;
        $.ajax({
           type: "POST",
           url: "ajax_validation.php",
           data: {'category_email_mode' : 'add_email', 'email' : email_id},
           dataType: "text",
           success: function(msg){
                if(msg == 'true')
                {
                    return true;
                }
                else(msg == 'false')
                {
                    return false;
                }
           }
        });
    }
},"Email id is already choosen");

ajax返回true时,函数不返回true。怎么了?

【问题讨论】:

    标签: jquery jquery-plugins jquery-validate


    【解决方案1】:

    AJAX 不能那样工作。您不能从成功回调中返回值 - 回调只是 AJAX 请求成功后对数据运行的内容。

    如果你必须使用 AJAX 来做到这一点,你需要让它同步:

    $.validator.addMethod("checkMail", function(value, element) {
            var email_id = value;
            var valid = false;
            $.ajax({
               async: false, // make it synchronous
               type: "POST",
               url: "ajax_validation.php",
               data: {'category_email_mode' : 'add_email', 'email' : email_id},
               dataType: "text",
               success: function(msg){
                    valid = (msg=='true');
               }
            });
            return valid;
        }
    },"Email id is already choosen");
    

    也就是说,您最好使用内联 PHP 而不是 AJAX 调用来进行验证。

    【讨论】:

      猜你喜欢
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多