我正在尝试使用服务器端代码实现来实现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");
}
});
});
});
请帮我解决并实施相同的内容。
答案 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变为非常好的网站。