javascript - "Not a robot"recaptcha 没有 <form> 而是 AJAX

标签 javascript ajax captcha recaptcha forms

传统的使用方式"I am not a robot" Recpatcha似乎是一个 <form>在客户端:

<form action="post.php" method="POST">
    <div class="g-recaptcha" data-sitekey="6Lc_0f4SAAAAAF9ZA_d7Dxi9qRbPMMNW-tLSvhe6"></div>
    <button type="submit">Sign in</button>
</form>

<script src='https://www.google.com/recaptcha/api.js'></script>

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


但是,在我的代码中我没有使用 <form>而是一个 AJAX 调用:

$('#btn-post').click(function(e) { 
  $.ajax({
    type: "POST",
    url: "post.php",
    data: {
      action: 'post',
      text: $("#text").val(),
      ajaxMode: "true"
    },
    success: function(data) { },
    error: function(data) { } 
  }); } });

如何获取 g-recaptcha-response用这个解决方案回答?

最佳答案

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

HTML代码:

<div id="recaptcha-service" class="g-recaptcha"
 data-callback="recaptchaCallback"
 data-sitekey=""></div>
<script type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=en"></script>

JavaScript 代码:

window.recaptchaCallback = undefined;

jQuery(document).ready(function($) {

  window.recaptchaCallback = function recaptchaCallback(response) {
    $.ajax({
      method: "POST",
      url: "http://example.com/service.ajax.php",
      data: { 'g-recaptcha-response': response },
    })
      .done(function(msg) {
        console.log(msg);
      })
      .fail(function(jqXHR, textStatus) {
        console.log(textStatus);
      });
  }

});

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

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

关于javascript - "Not a robot"recaptcha 没有 <form> 而是 AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30647113/

相关文章:

javascript - 我如何修复包含 addthis 的验证码中的错误

javascript - ExtJS 3.4 : How to add a custom renderer dynamically to a PropertyGrid?

javascript - 将第二个值插入 json 数组时属性未定义

php - $_POST、$_GET 和安全性

javascript - Microsoft Edge 阻止发送到同一专用网络 CIDR 中的 IP 的跨域请求

验证码替代方案,安全性如何?

javascript - 使用追加添加行后数据表方法不起作用

javascript - 如何上传文件并将其显示为 html

javascript - 使用 Ajax 将字符串数据发送到 Java

java - 如何获取Hotmail验证码图片