通过javascript获取reCaptcha值?

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


当我填写validation码字段并单击按钮时,我想加载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.phpvalidationvalidation码我只需要将这两个validation码字段传递给它,这样它就可以完成检查validation码的所有后台工作。

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

最好的祝福!

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(); 

小心“document.getElementsByName”。 它返回一个数组,并且数组没有“value”属性。 我宁愿尝试:

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

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