【发布时间】:2021-06-05 21:57:00
【问题描述】:
目前在登录页面,我需要在同一页面上同时进行评分和复选框reCaptcha评估,如果评分失败我需要动态加载复选框评分。
目前我可以使用它,虽然我不知道我是否正确实现了它。
在我的 HTML 标题中,我有
<script src="https://www.google.com/recaptcha/enterprise.js?render=${Login.reCaptchaScoreKey}"></script>
在我的 html 正文中
<script src="https://www.google.com/recaptcha/enterprise.js?render=explicit"></script>
在 AJAX 中加载我拥有的复选框:
var captchaContainer = grecaptcha.render('captcha_container', {
'sitekey' : siteKey,
'callback' : function() {
$("#LOGIN").prop('disabled', false);
}
});
要提交分数,我有以下内容(我将 reCaptcha 生成的令牌附加到 HTML 元素,因为这是我能想出将其发送到后端的唯一方法):
grecaptcha.enterprise.ready(function() {
grecaptcha.enterprise.execute(scoreKey, {action: action}).then(function(token) {
$('#g-recaptcha-response').val(token);
submitForm();
});
});
似乎很奇怪,我需要包含两次 reCaptcha JS 文件才能使其正常工作,这有点代码味道。如果我按预期删除第一个 JS 文件,我的分数 reCaptcha 会中断,如果我删除第二个,我的复选框会中断。
有没有办法通过只包含一次 reCaptcha JS 来做我想做的事情?还是我这样做的方式好吗?
【问题讨论】:
-
感谢@ssBarBee,我在发布之前确实看到了该文档,如果我只包括文档中指出的第一个 JS 文件,当我尝试渲染复选框时,我得到:
grecaptcha.render is not a function。另外添加grecaptcha.ready似乎并没有解决我的问题:/ -
@Nicolasome 这个答案对你有帮助吗? stackoverflow.com/questions/50158132/…
-
@SamJoshua 没有,但我收到了 Google 支持团队的答复。我在下面发布了答案。
标签: javascript ajax spring jsp recaptcha