Javascript reCaptcha-验证失败

Javascript reCaptcha-验证失败,javascript,html,ajax,jsp,Javascript,Html,Ajax,Jsp,我在我的网站上使用reCaptcha,在家里一切正常,但当我在工作中尝试它时,它只加载reCaptcha,但在提交按钮单击时不会通过验证(在按钮单击时不要执行任何操作) 我使用以下代码进行验证: function validateRecaptcha() { alert('inside validation'); var challenge = Recaptcha.get_challenge(); var response = Recaptc

我在我的网站上使用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;
    }
函数validateRecaptcha(){
警报(“内部验证”);
var challenge=Recaptcha.get_challenge();
var response=Recaptcha.get_response();
var remoteip=“”;
警报(“挑战-”+挑战);
警报(“响应-”+响应);
警报(“远程IP-”+remoteip);
$.ajax({
类型:“POST”,
url:“validateRecaptcha.jsp”,
async:false,
数据:{
remoteip:remoteip,
挑战:挑战,
答复:答复
},
成功:功能(resp){
如果($.trim(resp)=“true”){
警报(“验证码-右侧”);
document.myform.submit();
}
否则{
警报(“验证码-错误”);
重新加载recaptcha();
enableWarningRecaptcha('Word验证:'、'.warning'、'.WordVerification');
返回false;
}
}
});
警报(“验证结束”);
返回false;
}
此外,我正在使用警报功能进行测试,这些是测试结果:

  • 警报(“内部验证”);-精细

  • 警惕(‘挑战-’+挑战);-精细

  • 警报(“响应-”+响应);-精细

  • 警报('remoteip-'+remoteip);-精细

  • 警报(“验证码-右”);-失败

  • 警报(“验证码-错误”);-失败

  • 警报(“验证结束”);-精细

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");
}
%>

可能是它的网络问题,还是别的什么

谁能帮帮我吗

试试这个:

if($.trim(resp) == "true") {
   alert('captcha - right');    
   document.myform.submit();
} else {
   alert('captcha - wrong');
   reloadRecaptcha();
   enableWarningRecaptcha('Word Verification:','.warning','.WordVerification');
   return false;
}
当您提交表单时,会发出警报,以便不会看到警报

要调试,请在success函数中添加警报,以检查是否有警报

还可以在ajax中添加错误函数:

error: function(ex,a,b,c){
  alert("some error");
}
在成功函数之后添加此函数以调试是否有任何错误

注意:您还可以使用firebug检查ajax的状态 代码


摆脱那些恼人的Captcha垃圾,因为JavaScript已经提供了一种机制,用于确定事件是否是用户通过“isTrusted”布尔属性发起的

用法如下

<button id="logon" onclick="if(event.isTrusted){SomeFunction();}">Logon</button>
登录

任何试图单击此按钮的javascript,如logon.click();将使此测试失败,并且该功能将无法运行。

它是-内部服务器错误[500]。有没有办法解决这个问题?@DenissMuntjans可能是ajax中给定的url不正常工作。检查权限并通过点击浏览器中的url进行尝试。问题在这里(validateRecaptcha.jsp:)-
reCAPTCharResponse reCAPTCharResponse=reCaptcha.checkAnswer(remoteip、challenge、res)-java.net.ConnectException:连接被拒绝:connectYeah,我认为这是防火墙问题!我关闭了防火墙,但这是一样的:(对海报没有帮助。而且,任何试图访问这一人力资源的程序都可以使用不符合规范的JSAPI,如JSDOM,以编程方式模拟可信事件。