jQuery Validator异步调用[重复]

Posted

技术标签:

【中文标题】jQuery Validator异步调用[重复]【英文标题】:jQuery Validator async call [duplicate] 【发布时间】:2018-09-05 14:48:10 【问题描述】:

我正在尝试通过进行 ajax 调用来验证字段。然而,因为它是一个异步调用,所以它总是返回 false。我尝试添加超时但仍然没有运气。难道我做错了什么?我还尝试使用简单的检查来查看 ajax 调用是否是问题所在并且运行良好。

     $.validator.addMethod("validateSupplierCode" + currTabExt, function (value, element, params) 
        var result = false;
        callAjax('Supplier/ValidateSupplier?Code=' + value, 'GET', "", function success(data) 
            if (data.isValid) 
                console.log("trueee");
                result = true;
             else 
                console.log("falsseeeee");
                result = false;
            
        );
        setTimeout(function () 
                return result;           
        , 100);
    , "Please enter a valid supplier or 'MISC'");

【问题讨论】:

【参考方案1】:

我认为您的“return”语句应该在 AJAX 调用的回调函数中。像这样:

$.validator.addMethod("validateSupplierCode" + currTabExt, function (value, element, params) 
    var result = false;
    callAjax('Supplier/ValidateSupplier?Code=' + value, 'GET', "", function success(data) 
        if (data.isValid) 
            console.log("trueee");
            result = true;
            return result;
         else 
            console.log("falsseeeee");
            result = false;
            return result;
        
    );
, "Please enter a valid supplier or 'MISC'");

【讨论】:

我先试过了,但是没有用。我检查了论坛,它说尝试使用超时【参考方案2】:

你的ajax调用是Aysnc,如果你想通过ajax调用以同步方式返回,你需要点击同步调用

理解这个函数并在你的 ajax 调用中实现逻辑 顺便说一句,您需要在 ajax 调用中更新的是 async : false

function syncMethod() 
    var returnValue= false;
    $.ajax(
    async: false,
    url: "url",
    success: function() 
         returnValue= true;
    ,error:function()
         returnValue= false;
    );

    return returnValue;

【讨论】:

以上是关于jQuery Validator异步调用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

异步地理定位 API 和 jQuery 延迟对象 [重复]

jquery ajax获取返回值为null

jquery Ajax 全局调用封装

请问jQuery validate自定义验证规则怎么调用

jQuery停止异步运行的ajax [重复]

等待先前的异步功能完成[重复]