【发布时间】:2015-07-25 23:00:00
【问题描述】:
我正在为我的服务制作我的注册页面。我需要检查 Google 的 Recaptcha 是否成功验证。我决定使用 jquery.ajax。
我创建了一个函数“checkCaptcha()”,它将 isCAPT(验证码是否有效)设置为真(FLD_VALID)或不真(FLD_EMPTY): p>
function checkCaptcha() {
alert("1");
var captcha_response_text = grecaptcha.getResponse();
var request = $.ajax({
url: "ajax/registrationA.php",
type: "post",
data: { captcha: true, captcha_response: captcha_response_text }
});
request.done(function (response, textStatus, jqXHR) {
alert("2");
if(response) {
isCAPT = FLD_VALID;
}
else {
isCAPT = FLD_EMPTY;
}
});
}
我不得不说“registrationA.php”工作正常。没有问题。
在这个函数之后,我正在检查我的提交按钮处理“onclick”事件:
apply_button.onclick = function () {
checkCaptcha();
alert("3");
//alert("Капча " + isCAPT + " Логин " + isLOGIN + " Почта " + isMAIL + " Пароль " + isPASS + " Соответствие " + isPAS2);
return false;
};
您可以看到三个“alert(...)”运算符。问题是当我按下提交按钮(apply_button)时,我收到三个警报:1、3、2。我该如何解决这个问题。我需要等到“requiest.done”执行后才转到“alert("3")”。这是必不可少的,因为现在此函数会检查字段在检查导致错误的验证码状态,因为在这种情况下 isCAPT 等于 false。
请帮我解决这个问题。也许有更好的方法来检查验证码是否经过验证(也许有一个类似“grecaptcha.isVerified”的函数)。
【问题讨论】:
-
您正在处理异步数据,因此无法保证以同步顺序响应。也许您可以将
apply_button.onclick函数移到request.done回调中。
标签: javascript jquery ajax registration recaptcha