2012-01-16 3 views
0

Я построил базовую форму с проверкой ajax и переадресацией страницы с помощью PHP и jQuery. Это работало нормально несколько дней назад. Я вернулся к нему, и ajax, похоже, перестает работать. В настоящий момент ajax просто проверяет тест var и возвращает данные обратно. Это действительно раздражает меня, поскольку он работает отлично изначально! Кажется странным, поскольку я не вижу ничего очевидного, надеясь, что некоторые свежие глаза могут помочь.JQuery Ajax - Код действительно работал, теперь нет?

Ajax прекратил отправлять данные, поэтому я нажимаю кнопку «Отправить», и ajax ничего не отправляет, поэтому мой if() ничего не делает! Я получаю значения формы отлично. Пробовал с основными аяксом и предупреждениями, что-то странное, похоже, происходит.

Надеется, что вы можете помочь

<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';  
        } 
    } 


    ?> 
+3

Упс! вы забыли упомянуть, что не работает ..., что точно не работает? – gdoron

+0

Попробуйте использовать «Charles Proxy», чтобы сузить его. «Чарльз» - отличное приложение, которое помогает определить, какие данные отправляются туда и обратно между клиентом и сервером. По крайней мере, таким образом вы можете определить, действительно ли отправляемые данные действительны, если его отправка вообще. и если он отправляется, определите, не вызывается ли сервер. – Sitnam

+0

Извините ajax только что прекратил работу, я получаю значения формы, но когда я отправляю их с помощью ajax, мой if не отвечает, как будто он перестает работать. Пробовал базовый аякс с предупреждениями, и ничего, похоже, не много. – ChrisSherwood

ответ

1

Трудно сказать, не видя ошибку вы получаете, но из того, что я вижу, вы не возвращаете ничего из своей функции после успешной проверки, поэтому ваша форма w также должны быть представлены нормально.

Вы можете предотвратить форму от представления, используя что-то вроде:

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

, но, возможно, возвращение false из обработчика представить нажатия кнопки достаточно, а.

+0

согласен. возврат false в обработчик кликов должен сделать это. – Evan

+0

попробовал, чтобы ничего не изменилось, спасибо за ответ. – ChrisSherwood

+0

Он работает, но я получаю дополнительные символы в конце вывода моего URL-адреса. 'http: //localhost/creativetree/projectboard.php? id =% 20% 20% 20% 20% 20% 20% 20% 20test' Любые идеи? – ChrisSherwood

Смежные вопросы