我在我的网站上使用reCaptcha,一切都在家里工作正常但是当我在工作时尝试它只加载reCaptcha但是没有通过提交按钮点击验证(按钮点击不做任何事情)!
我正在使用此代码进行验证:
function validateRecaptcha() {
alert('inside validation');
var challenge = Recaptcha.get_challenge();
var response = Recaptcha.get_response();
var remoteip = "<%=remoteip%>";
alert('challenge - '+challenge);
alert('response - '+response);
alert('remoteip - '+remoteip);
$.ajax({
type: "POST",
url: "validateRecaptcha.jsp",
async: false,
data: {
remoteip: remoteip,
challenge: challenge,
response: response
},
success: function(resp) {
if($.trim(resp) == "true") {
alert('captcha - right');
document.myform.submit();
}
else {
alert('captcha - wrong');
reloadRecaptcha();
enableWarningRecaptcha('Word Verification:', '.warning', '.WordVerification');
return false;
}
}
});
alert('end of validation');
return false;
}
此外,我正在使用警报功能进行测试,这些是测试结果:
警告('内部验证'); - 罚款
警告('挑战 - '+挑战); - 罚款
警报('响应 - '+响应); - 罚款
alert('remoteip - '+ remoteip); - 罚款
alert('captcha - right'); - 失败
警告('验证码 - 错误'); - 失败
警告('验证结束'); - 罚款
validateRecaptcha.jsp:
<%@ page import="net.tanesha.recaptcha.ReCaptchaImpl,net.tanesha.recaptcha.ReCaptchaResponse" %>
<%
ReCaptchaImpl reCaptcha = new ReCaptchaImpl();
reCaptcha.setPrivateKey("6LcMh-oSAAAAAF8m92XWQ4d2giKMIESghMQDQyQZ");
String remoteip = request.getParameter("remoteip");
String challenge = request.getParameter("challenge");
String res = request.getParameter("response");
ReCaptchaResponse reCaptchaResponse = reCaptcha.checkAnswer(remoteip, challenge, res);
if (reCaptchaResponse.isValid()) {
out.print("true");
} else {
out.print("false");
}
%>
可能是它的网络问题??还是其他什么?
有人可以帮助我吗?
答案 0 :(得分:0)
试试这个:
if($.trim(resp) == "true") {
alert('captcha - right');
document.myform.submit();
} else {
alert('captcha - wrong');
reloadRecaptcha();
enableWarningRecaptcha('Word Verification:','.warning','.WordVerification');
return false;
}
当您提交表单时,不会看到提醒警报。
然后调试在成功函数中添加警报以检查它是否到达那里。
还在ajax中添加错误函数:
error: function(ex,a,b,c){
alert("some error");
}
在调试成功函数后添加此项是否有任何错误。
注意:您也可以使用firebug来检查ajax的状态 代码。
答案 1 :(得分:0)
摆脱烦人的验证码垃圾,因为JavaScript已经提供了一种机制,用于确定事件是否由用户通过“ isTrusted”布尔属性发起。
用法如下...
<button id="logon" onclick="if(event.isTrusted){SomeFunction();}">Logon</button>
任何javascript尝试单击此按钮,例如logon.click();。将会使测试失败,并且该功能将无法运行。