我正在尝试使用jQuery和"ajax"请求在表单中实现最新的ReCaptcha(aka "invisible" ReCaptcha) .
ReCaptcha文档:https://developers.google.com/recaptcha/docs/invisible
我的表格:
<form id="myForm" >
<input type="email" name="email" />
<input type="password" name="password" />
<!--<input type="submit" value="log in" />-->
<button class="g-recaptcha" data-sitekey="6LdK..." data-callback="onSubmit">log in</button>
</form>
<div id="status"></div>
我的javascript(jQuery):
<script>
function onSubmit(token){
document.getElementById("myForm").submit();
}
$(document).ready(function(){
$("#myForm").submit(function(event){
event.preventDefault();
var datas = $("#myForm").serialize();
$.ajax({
type: "POST",
url: "test.php",
data: datas,
dataType: "json",
beforeSend: function(){
$("#status").html("logging in...");
},
success: function(response){
$("#status").html(response.text);
if(response.type=="success"){
window.location.replace("/myaccount");
}
},
error: function(){
$("#status").html("Failed.");
}
});
});
});
</script>
ReCaptcha需要设置"data-callback",我不知道如何绑定我已经存在的".submit(function(event)"函数 .
我的"onSubmit()"技巧不起作用,它忽略"ajax"并刷新页面 .
如何在"datas"变量中发送"g-recaptcha-response"值以将其发送到test.php?
2 回答
在test.php中,您需要验证服务器端的验证码:
所以这里是我在Invisible reCAPTCHA的文档中进一步挖掘之后如何解决它,并且明显学习了一些jQuery,因为我不熟悉JS(很酷的东西):
我的头标记有javascript(和一些css删除丑陋的Google徽章):
HTML:
如果你需要整个PHP,请告诉我,因为它超出了这个问题的范围 . 您可能需要在JS中更改“url:location.href”,因为在我的情况下,呈现HTML表单和JS以及处理POST变量的脚本是相同的(不是很好,测试目的) . 基本上我只是验证POST变量,然后最终返回一个json,如: