Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过javascript获取reCaptcha值?_Javascript_Php_Jquery - Fatal编程技术网

通过javascript获取reCaptcha值?

通过javascript获取reCaptcha值?,javascript,php,jquery,Javascript,Php,Jquery,我已经将reCaptcha添加到我的站点中,当我以表单的形式正常使用它时,一切都很好,但现在我在尝试通过JavaScript或jQuery读取验证码值时遇到了一个问题。我有这个HTML代码,可以在我的页面上加载reCaptcha <div align="center"> <script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=mySecretkey321"&g

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

<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>
单击该按钮时,我会看到一个具有以下值的警报框:

go.php?rcf=undefined&rrf=undefined
基本上,我无法读取这些字段,我认为我读取了错误的字段。文件go.php验证验证码我只需要将这两个验证码字段传递给它,这样它就可以完成检查验证码的所有后台工作

我真的不知道如何做到这一点,我想有一个简单的解决办法,但我在任何地方都找不到,所以我想问问社区


致以最良好的祝愿

document.getElementsByName函数返回元素的集合,正如名称排序所暗示的,它是元素(带有s复数)。该集合上没有定义
属性,这就是为什么尝试访问它会返回
未定义

如果确定只有一个(不多也不少)具有这些名称的元素,则可以访问集合中的第一个索引(即所需的元素)并获取其值:

var rcf = document.getElementsByName('recaptcha_challenge_field')[0].value;
var rrf = document.getElementsByName('recaptcha_response_field')[0].value;
或者,您可以使用jQuery(因为您已经加载了jQuery以用于AJAX调用)来获取值:

var rcf = $('[name="recaptcha_challenge_field"]').val();
var rrf = $('[name="recaptcha_response_field"]').val();
小心使用“document.getElementsByName”。它返回一个数组,而数组没有“value”属性。 我宁愿尝试:

var rcf = document.getElementsByName('recaptcha_challenge_field')[0].value;
var rrf = document.getElementsByName('recaptcha_response_field')[0].value;
如果您只是在查找具有指定标记的第一个元素

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