【问题标题】:Google Recaptcha Ajax response strange checking orderGoogle Recaptcha Ajax 响应奇怪的检查顺序
【发布时间】: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


【解决方案1】:

您需要检查 deferred.promise() 方法来处理异步数据。检查JQ documentation。简而言之,它完全满足您的需求。它允许等到第二个异步请求完成并启动 3d 功能。

【讨论】:

    猜你喜欢
    • 2011-09-09
    • 2011-09-30
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多