reCaptcha第一个计时器问题

时间:2013-05-31 22:00:17

标签: javascript recaptcha

我第一次尝试使用reCaptcha,这是我到目前为止编写的代码,但它似乎不起作用。

这是我的html表单:

    <form method="post" action=''>
            <cfoutput>
            <input type="hidden" name="isPost" value="1"  />


                    First Name: <input type="text" name="firstname" placeholder="First name" required><br />
                    Last Name:  <input type="text" name="lastname" placeholder="Last name" required><br />

                    Email: <input type="email" name="email" placeholder="example@email.com" required><br />

                    Zip Code: <input id="zip" type="text" pattern="[0-9]{5}"  name="zipcodex" placeholder="ex. 01234" required /><br />

                    Home Phone: <input type="tel" pattern='[0-9]{10}'  name="homephone" placeholder="ex. 3335551234" required><br />

                    Cell Phone: <input type="tel" pattern='[0-9]{10}' name="cellphone" value="#cellphone#" placeholder="ex. 9990001234"><br />

                    My Interest             
                        <select class="interestOption" name="Formprocedure" id="procedure" required >
                                    <option selected="selected" disabled="disabled" value="">My Interest</option>
                                    <cfloop query="procedurefinder"><option <cfif procedureid eq Formprocedure>selected="selected" </cfif>title="#procedurename#" value="#procedureid#">#left(procedurename,20)#</option>
                                    </cfloop>                                   
                                    </select><br />



                            <textarea name="comments" cols="50" rows="5" placeholder="Please enter any additional comments"></textarea><br />


                            <script type="text/javascript"
                               src="http://www.google.com/recaptcha/api/challenge?k=6LdUMuISAAAAA********mMK5cbR1pm1AG4WV">
                            </script>
                            <noscript>
                               <iframe src="http://www.google.com/recaptcha/api/noscript?k=6LdUMuISAAAAAMi**************mMK5cbR1pm1AG4WV"
                                   height="50" width="400" frameborder="0"></iframe><br>
                               <textarea name="recaptcha_challenge_field" rows="3" cols="0">
                               </textarea>
                               <input type="hidden" name="recaptcha_response_field"
                                   value="manual_challenge">
                            </noscript>
                        <br />
<button id="submit" onclick="SubmitForm();">Submit</button>



                </cfoutput>
            </form>

这是我的JS代码:

<script type="text/javascript">
function SubmitForm(){ 
        var xmlHttp = new XMLHttpRequest(); 
        xmlHttp.open("POST",'http://www.google.com/recaptcha/api/verify',true); 
        xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
        params ="'6LdUMuISAAAAAMi4iDZ1sIuEmMK5cbR1pm1AG4WV','www.newimagespecialists.com','"+Recaptcha.get_response()+"','"+Recaptcha.get_challenge+"'"; 
        xmlHttp.send(params); 
        xmlHttp.onreadystatechange=function(){ 
                if(xmlHttp.readyState==4){ 
                        if(xmlHttp.status == 200){ 
                                form.submit(); 
                        }else{
                             return false;
                        } 

                } 
        } 
} 
</script>

这是我从firebug得到的回应:

Parameters application/x-www-form-urlencoded
'6LdUMuISAA1sIuE... =typeof RecaptchaState?null:RecaptchaState.challenge}'
Source
'6LdUMAA*******IuEmMAG4WV','www.example.com','fitsesq Accord','function (){return"undefined"==typeof RecaptchaState?null:RecaptchaState.challenge}'

我的问题是,我真的不明白代码中的错误,以及为什么我的表单会继续提交?任何人都可以指出我犯错误的地方吗?

1 个答案:

答案 0 :(得分:0)

要阻止您的表单提交,您必须这样做:

<form method="post" action='' onsubmit="return false">

在你的代码中,你写了类似的东西:

Recaptcha.get_response()+"','"+Recaptcha.get_challenge

检查Recaptcha.get_challenge是否应替换为Recaptcha.get_challenge()并加载了ajax api。

<script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>

并检查您是否使用Recaptcha.create

正确创建了recaptcha