2012-01-16 12 views
0

PHPとjQueryでajax検証とページリダイレクトを使用して基本フォームを構築しました。これは数日後にうまくいきました。私はそれに戻ってきて、アヤックスは動作を停止したようだ。現時点では、ajaxはテストvarをチェックしてデータをエコーバックしています。それは最初は正常に動作しているので、本当に私を悩ましています!新鮮な目が助けてくれることを願って、私は何かを目立たせることができないので、奇妙に見えます。JQuery Ajax - コードは今では機能しませんでしたか?

ajaxがデータの送信を停止しているので、submitをクリックし、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"を使って絞り込んでみてください。 "Charles"は、クライアントとサーバーの間でどのデータがやり取りされているかを判断するのに役立つ素晴らしいアプリです。少なくともこの方法では、送信するデータが有効であるかどうかを判断できます。送信されている場合は、サーバーがただちに盗み出されていないかどうかを判断します。 – Sitnam

+0

申し訳ありませんajaxは動作を停止しました。フォームの値を取得しますが、ajaxを使用して送信すると、ifが応答を停止しているように応答しません。アラートで基本的なAjaxを試してみると、何もあまり効果がないようです。 – ChrisSherwood

答えて

1

それは、あなたがされるエラーを見ることなく伝えるのは難しいですが、私が見ることができるものから、検証が成功すると関数から何も返さないので、フォームw正常に提出されることもあります。

あなたがのようなものを使用して提出からフォームを防ぐことができます。

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

おそらく送信ボタンのクリックハンドラからfalseを返すことにも十分ですが。

+0

が合意しました。クリックハンドラでfalseを返すと、それを行う必要があります。 – Evan

+0

tryed、何も変わっていない、答えに感謝する。 – ChrisSherwood

+0

動作しますが、データURLの出力の最後に余分な文字が表示されています。 'http://localhost/creativetree/projectboard.php?id =%20%20%20%20%20%20%20%20test'任意のアイデア? – ChrisSherwood

関連する問題