“不是机器人”没有a<表格>而是AJAX

使用“我不是机器人”的传统方式似乎是使用<表格&gt在客户端:

<formaction=“post.php”method=“post”>
<div class=“g-recaptcha”数据站点key=“6Lc_0f4SAAAAAF9ZA_d7Dxi9qRbPMMNW-tLSvhe6”&gt&lt/部门>
<按钮类型=“提交”>登录&lt/按钮>
&lt/表格>
<脚本src=https://www.google.com/recaptcha/api.js“&gt&lt/脚本>

然后将一些g-recaptcha-response发送到服务器


但是,在我的代码中,我没有使用<表格&gt而是一个AJAX调用:

$('btn post')。单击(函数(e){
$.ajax({
类型:“POST”,
url:“post.php”,
数据:{
行动:"张贴",,
text:$(“#text”).val(),
ajaxMode:“正确”
},
成功:函数(数据){},
错误:函数(数据){}
}); } });

如何使用此解决方案获得g-recaptcha-response答案?

我只是实现了它,没有分别使用任何表单和提交机制。因此,这是一个纯AJAX解决方案

HTML代码:

<div id=“recaptcha服务”class=“g-recaptcha”
数据回调=“recaptchaCallback”
数据sitekey=“”&gt&lt/部门>
<script type=“text/javascript”src=”https://www.google.com/recaptcha/api.js?hl=en“&gt&lt/脚本>

JavaScript代码:

window.recaptchaCallback=未定义;
jQuery(文档).ready(函数($){
window.recaptchaCallback=函数recaptchaCallback(响应){
$.ajax({
方法:“张贴”,
url:“http://example.com/service.ajax.php",
数据:{'g-recaptcha-response':response},
})
.done(函数(msg){
控制台日志(msg);
})
.fail(函数(jqXHR,textStatus){
console.log(textStatus);
});
}
});

重点是使用回调(recaptchaCallback,在本例中)

您可以在以下位置找到更完整的示例:https://gist.github.com/martinburger/f9f37770c655c25d5f7b179278815084. 该示例在服务器端使用Google的PHP实现(https://github.com/google/recaptcha)

发表评论