Google Recaptcha V2回复错误

时间:2015-09-28 08:15:05

标签: jquery .net ajax captcha recaptcha

我正在尝试使用服务器端代码实现来实现Google Recaptcha V2。现在,当我尝试发送g-recaptcha-response时,我收到类似ReferenceError: g is not defineddata: JSON.stringify(g-recaptcha-response),的错误,当我不发送此参数时,我是在服务器端代码上获取Not defined error。这是我使用AJAX的客户端代码..

    $(document).ready(function () {

        $('#Captcha').click(function () {

            $.ajax({
                type: 'POST',
                url: 'http://localhost:64132/ValidateCaptcha',
                data: JSON.stringify(g-recaptcha-response),
                contentType: "application/json; charset=utf-8",
                dataType: 'json',  // Set response datatype as JSON
                success: function (data) {
                    console.log(data);
                    if (data = true) {
                        $("#lblmsg").text("Validation Success!!");
                    } else {

                        $("#lblmsg").text("Oops!! Validation Failed!! Please Try Again");
                    }
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert("Error");
                }
            });

        });

    });

请帮我解决并实施相同的内容。

1 个答案:

答案 0 :(得分:2)

请参阅docs如何验证g-recaptcha-responce。实际上它是文本区域字段,因此在jquery中你可以将其称为$('#g-recaptcha-response')。val()

所以在客户端:

var response = $('#g-recaptcha-response').val();
$.ajax({
            type: 'POST',
            url: 'http://localhost:64132/ValidateCaptcha',
            dataType: 'json',
            data: { response: response },
            ... 

请参阅我的post

更多

对我来说,你做了一件棘手的事: 立即在reCaptcha上点击你做一个xhr(jquery ajax请求):

$('#Captcha').click(function () { $.ajax({...})

然而,谷歌api可能尚未评估机器人人类线索并且尚未返回响应。因此,当您调用xhr时,客户端上不存在g-recaptcha-response

最好等待(超时)直到$('#g-recaptcha-response').val() <> '',然后你将xhr变为非常好的网站。