JQuery Ajax - Code现在没有工作吗?

时间:2012-01-16 15:05:49

标签: php javascript jquery html ajax

我使用PHP和jQuery构建了一个带有ajax验证和页面重定向的基本表单。几天前这个工作正常。我回过头来,ajax似乎已停止工作了。目前,ajax只是检查测试变量并回显数据。它真的很烦我,因为它最初工作正常!看起来很奇怪,因为我无法发现任何明显的东西,希望一些新鲜的眼睛可以提供帮助。

ajax已经停止发送数据,所以我点击提交,ajax什么都没发送,所以我的if()什么都不做!我得到的表格值很好。尝试了基本的ajax和警报,似乎发生了一些奇怪的事情。

希望你能帮忙

 <form id="registerform">
        <ul id="form">
        <li>
        <label for="email">Email:</label><span class="fieldbox"><input type="text" id="email"/></span>
        </li>
        <li>
        <label for="confirmemail">Confirm Email:</label><span class="fieldbox"><input type="text" id="confirmemail"/></span>
        </li>
        <li>
        <label for="password">Password:</label> <span class="fieldbox"> <input type="password" id="password"/></span>
        </li>
        <li>
        <label for="confirmpassword">Confirm Password:</label> <span class="fieldbox"> <input type="confirmpassword" id="confirmpassword"/></span>
        </li>
        <input type="submit" id="register" value="Sign me up!"/>
        </ul>
 </form>



<div id="errorbox"></div>

jQuery的:

   $(document).ready(function(){

           $("#register").click(function(){

           var formvalues = [$("#email").val(), $("#confirmemail").val(), $("#password").val(), $("#confirmpassword").val() ];
           var checklength = formvalues[2].length;


                    if(formvalues[0] == "" || formvalues[1] == ""){
                        $('#errorbox').fadeIn('slow');
                        $("#errorbox").html('<p class="errormsg">Please complete email fields.</p><div class="errormsgshodow"></div>');
                         $("#main").shake(3, 5, 600);
                        return false;//stop click function
                    }

                    if(formvalues[2] == "" ||  formvalues[3] == ""){
                       $('#errorbox').fadeIn('slow');
                        $("#errorbox").html('<p class="errormsg">Please complete password fields.</p><div class="errormsgshodow"></div>');
                         $("#main").shake(3, 5, 600);
                        return false;//stop click function
                    }

                   if(formvalues[0] != formvalues[1]){
                        $('#errorbox').fadeIn('slow');
                        $("#errorbox").html('<p class="errormsg">Password field do not match</p><div class="errormsgshodow"></div>');
                         $("#main").shake(3, 5, 600);
                        return false;//stop click function
                    }

                    if(formvalues[2] != formvalues[3]){
                        $('#errorbox').fadeIn('slow');
                        $("#errorbox").html('<p class="errormsg">Password field do not match</p><div class="errormsgshodow"></div>');
                         $("#main").shake(3, 5, 600);
                        return false;//stop click function
                    }

                     if(checklength < 6 || checklength > 6){
                         $('#errorbox').fadeIn('slow');
                         $("#errorbox").html('<p class="errormsg">Password is too long.</p><div class="errormsgshodow"></div>');
                          $("#main").shake(3, 5, 600);
                         return false;//stop click function   
                    }

                    var datastring = 'email=' + formvalues[1] + '&password=' + formvalues[3];

                       $.ajax({
                        type: "POST",
                        url: "signup.php",
                        data: datastring,
                                      success: function(data){
                                         //see redirect script for stuff here
                                         if(data != "error"){
                                         window.location="http://localhost/creativetree/projectboard.php?id="+data;
                                         }else{
                                         $('#errorbox').fadeIn('slow');
                                         $("#errorbox").html('<p class="errormsg">User account already exists with that email.</p><div class="errormsgshodow"></div>');;
                                         }



                                     }

                       });

           });

  });//jquery end






           //shake functions by Amit Dhamu
           jQuery.fn.shake = function(intShakes /*Amount of shakes*/, intDistance /*Shake distance*/, intDuration /*Time duration*/) {
                this.each(function() {
                     $(this).css({position:"relative"});

                     for (var x=1; x<=intShakes; x++) {
                          $(this).animate({left:(intDistance*-1)}, (((intDuration/intShakes)/4)))
                                       .animate({left:intDistance}, ((intDuration/intShakes)/2))
                                       .animate({left:0}, (((intDuration/intShakes)/4)));
                     }
                });
                return this;
           };

最小的PHP结果:

  <?php


    if(isset($_POST['email'])){

        $email =  $_POST['email'];
        $password =  $_POST['password'];

                    if($email == "test"){
                        echo $email;
                    }else{
                          echo 'error';      
                    }
    }


    ?>

1 个答案:

答案 0 :(得分:1)

在没有看到您收到的错误的情况下很难分辨,但从我所看到的情况来看,您在成功验证后没有从您的功能中返回任何内容,因此您的表单也会正常提交。

您可以使用以下内容阻止表单提交:

$("#registerform").submit(function() {
  return false;
});

但是也许从提交按钮单击处理程序返回false就足够了。