我针对这个问题从我的jquery插件中删除了所有逻辑,但是我的问题是,当我调用函数checkValidationName时,确实如此,并将name =设置为true。然后,当我尝试在调用它的位置之后立即进行比较时,该值为false。为什么是这样?
(function($){
$.fn.validate = function() {
var name = false;
$('.submitBtn').click(function() {
$.fn.validate.checkValidationName(nameValues);
**console.log("name = "+name); **//but this prints out "false"****
//shouldn't this be true since name returned true in the actual function??
}
});
$.fn.validate.checkValidationName = function(id) {
$.post("PHP/submitButtonName.php", {checkValidation: id},
function(data) {
**console.log("name = "+name); **//this prints out "true"****
//name is equal to true here
}, "json");
};
}
})(jQuery);
最佳答案
这是因为AJAX请求是异步的,并且在调用checkValidationName
之后,它尚未完成。您需要在回调中进行比较。
您可以使checkValidationName
进行回调,并在验证后使用结果进行调用:
(function($){
$('.submitBtn').click(function() {
$.fn.validate.checkValidationName(nameValues, function(valid) {
console.log(valid);
});
});
$.fn.validate.checkValidationName = function(id, callback) {
$.post("PHP/submitButtonName.php", {checkValidation: id},
function(data) {
var valid = data.foo; // or however you determine that
callback(valid); // call callback
}, "json");
};
}(jQuery));