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