jQuery Validator异步调用

时间:2018-03-27 09:08:50

标签: javascript jquery ajax validation

我正在尝试通过进行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'");

2 个答案:

答案 0 :(得分: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'");

答案 1 :(得分:0)

你的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;
}