reCaptcha - 验证失败

时间:2013-11-25 10:56:06

标签: javascript html ajax jsp

我在我的网站上使用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");
}
%>

可能是它的网络问题??还是其他什么?

有人可以帮助我吗?

2 个答案:

答案 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();。将会使测试失败,并且该功能将无法运行。