Получить значение reCaptcha через javascript?

Я добавил reCaptcha на свой сайт, и когда я использую его обычно в форме, все работает отлично, но теперь я столкнулся с проблемой, когда попытался прочитать значение captcha с помощью 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> 

Когда я заполню поле captcha и нажимаю кнопку, я хочу загрузить значения 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 проверяет captcha Мне просто нужно передать эти два поля captcha, чтобы он мог выполнять всю фоновую работу по проверке captcha.

Я действительно не знаю, как добиться этого, и я думаю, что есть простое решение, но я не мог найти его нигде, поэтому я хотел спросить сообщество.

С наилучшими пожеланиями!

Функция 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». Он возвращает массив, а массивы не имеют атрибута «значение». Я бы предпочел:

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

если вы просто ищете первый элемент с указанным тегом.