【问题标题】:Get reCaptcha value via javascript?通过 javascript 获取 reCaptcha 值?
【发布时间】:2014-08-14 21:30:30
【问题描述】:

我已将 reCaptcha 添加到我的网站,当我以某种形式正常使用它时,一切正常,但现在当我尝试通过 JavaScript 或 jQuery 读取验证码值时遇到了问题。我有这个在我的页面上加载 reCaptcha 的 HTML 代码。

<div align="center">
    <script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=mySecretkey321"></script>
    <noscript>
        <iframe src="http://www.google.com/recaptcha/api/noscript?k=mySecretkey321" height="300" width="500" frameborder="0"></iframe><br>
        <textarea id="rcf" name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
        <input type="hidden" id="rrf" name="recaptcha_response_field" value="manual_challenge">
    </noscript>
    <input type="button" value="Ok!" id="ok" class="btn btn-danger btn-lg"/>
</div>

当我填写验证码字段并单击按钮时,我想加载 recaptcha_response_fieldrecaptcha_challenge_field 的值,以便我可以通过 $.get() 提交它们;所以我想出了这个代码:

$("#ok").click(function() {
    var res,res2;
    var rcf = document.getElementsByName('recaptcha_challenge_field').value;
    var rrf = document.getElementsByName('recaptcha_response_field').value;
    var url = "go.php?rcf="+ rcf +"&rrf=" + rrf;
    alert(url);
    $.get( url, function( data ) {
      var n = data.indexOf("#");
      res = data.slice(0,n);
      res2 = data.slice(n+1);
    });
});

当我单击按钮时,我会收到一个带有此值的警告框:

go.php?rcf=undefined&rrf=undefined

基本上我看不懂那些字段,我认为我读错了。文件 go.php 验证验证码我只需要将这两个验证码字段传递给它,这样它就可以完成检查验证码的所有后台工作。

我真的不知道如何实现这一点,我想有一个简单的解决方案,但我在任何地方都找不到,所以我想问问社区。​​p>

最好的问候!

【问题讨论】:

    标签: javascript php jquery


    【解决方案1】:

    document.getElementsByName 函数返回一个元素集合,顾名思义 - 它是元素(带有 s - 复数)。该集合没有定义value 属性,这就是为什么尝试访问它会返回undefined

    如果您确定只有一个(不多也不少)具有这些名称的元素,您可以访问集合中的第一个索引(这是您想要的元素)并获取它的值:

    var rcf = document.getElementsByName('recaptcha_challenge_field')[0].value;
    var rrf = document.getElementsByName('recaptcha_response_field')[0].value;
    

    或者,您可以使用 jQuery(因为您已经加载它以将其用于 AJAX 调用)来获取值:

    var rcf = $('[name="recaptcha_challenge_field"]').val();
    var rrf = $('[name="recaptcha_response_field"]').val();
    

    【讨论】:

      【解决方案2】:

      小心使用“document.getElementsByName”。它返回一个数组,而数组没有“值”属性。 我宁愿尝试:

      var rcf = document.getElementsByName('recaptcha_challenge_field')[0].value;
      var rrf = document.getElementsByName('recaptcha_response_field')[0].value;
      

      如果您只是在寻找具有指定标签的第一个元素。

      【讨论】:

        猜你喜欢
        • 2016-05-21
        • 2011-03-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-02
        • 2012-11-25
        • 2020-05-31
        • 2016-03-13
        • 1970-01-01
        相关资源
        最近更新 更多