完全从javascript中重新获得验证码,无需提交表单

问题描述 投票:1回答:1

我正在尝试通过JS提交的表单使用不可见的验证码v2。我在网上看到的每个示例都显示了具有指定操作和方法的常规纯HTML提交表单,但是我在表单上使用preventDefault()通过ajax提交了表单。似乎很简单,但是我已经搜索了几个小时,却找不到一个曾经这样做的在线人。

HMTL:

<form id="form-login">
  <!-- ...form fields... -->

  <div
      class="g-recaptcha"
      data-sitekey="<site_key>"
      data-size="invisible"
    ></div>
  <button class="uk-button uk-button-primary" type="submit">Submit</button>
</form>

JS:

$('#form-login').submit(function(event) {
  event.preventDefault();

  console.log(grecaptcha.getResponse()); // <-- always comes back empty
});

[我可以看到验证码正在初始化,因为我可以看到右下角的图标。

我看过grecaptcha.execute(),但似乎对我没有任何帮助。

控制台中没有错误。

javascript recaptcha invisible-recaptcha
1个回答
0
投票

[最近,我遇到了像您这样的问题,使验证码不可见给我带来了很多问题,例如https://github.com/google/recaptcha/issues/269,这仍然是GitHub上的未解决问题。

我在每次提交表单时使用动态生成的验证码解决了问题。这是我使用的一些代码。 (注释代码是对后端的调用,以验证Google API的响应)。

https://gist.github.com/ANTOSzbk/75ed7003e914162550f61399122a3bd4

然后您就可以像这样使用我的功能:

$('#form-login').submit(async function(event) {
  event.preventDefault();
  await captchaVerification();
});
© www.soinside.com 2019 - 2024. All rights reserved.