0

重複の可能性:
jquery ajax return:undefined

次のコードを記述して、メールがすでに存在するか、jqueryとjqueryvalidateを使用していないかを確認します。jqueryはメール形式の検証に使用されます。jquery関数で****check-email.php**ファイルを呼び出しました。データベースにemailaddressが存在していても、アクションが呼び出され、ダッシュボードページに移動します。実際には、次のページに移動しないでください。メールはすでに存在します。私の**"falseを返します;" jquery関数では効果がありません。dbに存在する場合でも次のページに移動します。私は間違っているところを取得していません???

これが私のコードです

index.html:-

<form name="mysignupform" id="mysignupform" class="form-horizontal"  action="Dashboard" method="post">
  <div class="control-group">
    <label class="control-label" for="inputEmail" >Email</label>
    <div class="controls">
      <input type="text" name="email" id="inputEmail"  placeholder="Email" >
    </div>
  </div>
  <br/>
  <div class="control-group">

    <label class="control-label" for="inputPassword" >Password</label>

 <div class="controls">

 <input class="password" type="password" name="password" id="inputPassword" placeholder="Password">


    </div>

    </div>


    <div class="controls">
      <input type="hidden" id="body" name="body" value=""></input>
    </div>

  <div class="control-group">
    <div class="controls">

      <button type="submit" name="submit" id="signupsubmit"class="btn btn-inverse" onsubmit="return function(e)">Go to Dashboard</button>
    </div>
  </div>

</form>

私のjquery関数:-

<script>
         $(document).ready(function(){ //newly added 

           $('#signupsubmit').click(function() 

         {
             alert('in');

             var emailVal = $('#inputEmail').val(); // assuming this is a input text field

             alert(emailVal);
             $.post('check-email.php', {'email' : emailVal}, function(data) {

             if(data=='true') return false;
             else $('#mysignupform').submit();

          });

       });

    });
</script>

私のチェック-email.php:-

 $con = mysql_connect("localhost","root","");

   if (!$con)
  {
     die('Could not connect: ' . mysql_error());
  }
       mysql_select_db("mojiva", $con);

       $sql = "SELECT email FROM user_info WHERE email =".$_POST['email'];

       $select = mysql_query($sql,$con);

       $row = mysql_num_rows($select);

            if ($row > 0)  
          {
            echo 'true';  
          }
             else 
          {
             echo 'false';
          }

?>

$('#signupsubmit')。click(function()の直後にjquery関数でtrue falseを試しましたが、この時点でこの関数はtrueを返します。しかし、postが呼び出されても、falseを返す効果はありません。

4

3 に答える 3

1

これは、falseが返されるのは、フォームではなくクリックイベントを参照しているためと考えられます。

フォーム上:

<form name="mysignupform" id="mysignupform" class="form-horizontal"  action="Dashboard" method="post" onsubmit="email_check($('#inputEmail').val())" >

次に、JQueryの場合:

<script>
         $(document).ready(function(){ //newly added 

          function check_email(emailVal){ 

         {
             alert('in');

             alert(emailVal);
             $.post('check-email.php', {'email' : emailVal}, function(data) {

             if(data=='true') return false;
             else return true;

          });

     }
    });
</script>
于 2012-10-22T13:12:13.320 に答える
0

「タイプ」を送信からボタンに変更して、この行を変更してみてください。

<button type="button" name="submit" id="signupsubmit" class="btn btn-inverse" onsubmit="return function(e)">Go to Dashboard</button>
于 2012-10-22T13:25:00.600 に答える
0

フォームの送信を停止する場合は、クリックがバブリングしないようにする必要があります。

$('#signupsubmit').click(function(e) {
    e.preventDefault();
    // do your ajax here
}
于 2012-10-23T02:36:39.003 に答える