带有ajax计时问题的jquery验证程序
在下面的代码中,ajax调用起作用,并且正确地更新了带有ajax计时问题的jquery验证程序,jquery,ajax,validation,Jquery,Ajax,Validation,在下面的代码中,ajax调用起作用,并且正确地更新了isTaken。但是return isTaken在ajax调用完成之前执行,因此它总是返回初始false设置async=true已被弃用,那么在返回正确更新的isTaken响应之前,如何等待ajax调用完成 $.validator.addMethod("checkExists", function (value, element) { var email = $("#email").val();
isTaken
。但是return isTaken
在ajax调用完成之前执行,因此它总是返回初始false
设置async=true
已被弃用,那么在返回正确更新的isTaken
响应之前,如何等待ajax调用完成
$.validator.addMethod("checkExists",
function (value, element) {
var email = $("#email").val();
var data = {email: email};
var isTaken = false;
$.ajax({
type: "POST",
url: "http://localhost/CFBserver/check_email.php",
data: data,
success: function (response) {
isTaken = (response == 1) ? true : false;
}
});
return isTaken;
},
"This username is already taken! Try another."
);
用于此,它在完成回调函数之前等待传递的AJAX调用完成
$.validator.addMethod("checkExists",
function (value, element) {
var email = $("#email").val();
var data = {email: email};
$.when(
return $.ajax({
type: "POST",
url: "http://localhost/CFBserver/check_email.php",
data: data
});
).done(function(response) {
return response == 1; // returns true is response is 1, false otherwise
});
},
"This username is already taken! Try another."
);
我还根据if语句返回布尔值,从而简化了代码
我会将这个AJAX调用从您的函数中取出,并将其作为一个单独的调用—这样代码看起来会更好,并且可以从其他地方进行调用
$.when(checkMail).done(function(response) {
return response == 1; // returns true is response is 1, false otherwise
});
// Outside of validator function...
function checkMail() {
return $.ajax({
type: "POST",
url: "http://localhost/CFBserver/check_email.php",
data: data
});
}
此外,您是否还希望处理AJAX调用中的错误,请使用then
而不是done
,并提供两个函数作为回调:一个用于成功,另一个用于失败:
$.when(checkMail).then(function(response) {
// Function gets called as 'success' from AJAX
return response == 1;
}, function (errorResponse) {
// Function gets called as 'error' from AJAX
// return false; // or
// return "Error when checking email: " + errorResponse;
});
用于此,它在完成回调函数之前等待传递的AJAX调用完成
$.validator.addMethod("checkExists",
function (value, element) {
var email = $("#email").val();
var data = {email: email};
$.when(
return $.ajax({
type: "POST",
url: "http://localhost/CFBserver/check_email.php",
data: data
});
).done(function(response) {
return response == 1; // returns true is response is 1, false otherwise
});
},
"This username is already taken! Try another."
);
我还根据if语句返回布尔值,从而简化了代码
我会将这个AJAX调用从您的函数中取出,并将其作为一个单独的调用—这样代码看起来会更好,并且可以从其他地方进行调用
$.when(checkMail).done(function(response) {
return response == 1; // returns true is response is 1, false otherwise
});
// Outside of validator function...
function checkMail() {
return $.ajax({
type: "POST",
url: "http://localhost/CFBserver/check_email.php",
data: data
});
}
此外,您是否还希望处理AJAX调用中的错误,请使用then
而不是done
,并提供两个函数作为回调:一个用于成功,另一个用于失败:
$.when(checkMail).then(function(response) {
// Function gets called as 'success' from AJAX
return response == 1;
}, function (errorResponse) {
// Function gets called as 'error' from AJAX
// return false; // or
// return "Error when checking email: " + errorResponse;
});
检查这个:检查这个:谢谢Siavas,这是我需要的。完美的谢谢你,西亚瓦斯,这是我需要的。完美的