Google JSP 페이지에서 Google recaptcha 위젯을 렌더링하고 양식을 제출할 때 프로그래밍 방식으로 내 Java 스크립트에서 도전 과제를 호출합니다.Invisible recaptcha 도전 과제를 프로그램 방식으로 호출합니다. 페이지 새로 고침시 항상 grecaptcha.getResponse()가 비어 있습니다.
<script type="text/javascript" id="recaptcha-response">
var siteKey = $('#recaptchasitekey').first().text();
var onloadCallback = function() {
grecaptcha.render('recaptcha_element', {
'sitekey' : siteKey,
'callback' : correctCaptcha,
'data-bind' : "qoActionTemplate"
},true);
};
var correctCaptcha = function(response) {
return response;
};
</script>
<div class="g-recaptcha" id="recaptcha_element" data-size="invisible" ></div>
<script src="http://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
<script type="text/template" id="recaptchaUrl">
다음은 도전을 불러오는 Java 스크립트 코드입니다.
executeRecaptcha : function() {
grecaptcha.execute();
captcha.token = grecaptcha.getResponse();
if (captcha.token == null || captcha.token == '') {
grecaptcha.reset();
grecaptcha.execute();
}
return captcha.token;
},
validateRecaptcha : function(response,checkToken) {
captcha.executeRecaptcha();
if (captcha.token) {
var captchaUrl = $('#recaptchaUrl').first().text();
captcha.userSIDVerify = $('#captcha_token').val();
$.ajax({
type : 'POST',
url : captchaUrl,
data : {
response : captcha.token
},
success : captcha.checkToken,
error : function() {
alert("failed")
return;
}
});
}
}
내 grecaptcha.getResponse()
는 항상 내가이 응답을 제출하는 두 번째 시간 후 처음으로 양식 제출에 비어 있습니다.