我已将 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>
当我填写验证码字段并单击按钮时,我想加载 recaptcha_response_field 和 recaptcha_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>
最诚挚的问候!
最佳答案
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();
关于javascript - 通过 javascript 获取 reCaptcha 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25309091/