0

私は AJAX を初めて使用しますが、MySQL データベース内の既存の値のフォーム検証チェックを取得することができました。私のAJAX日付検証を除いて、すべて正常に動作します。適切に検証されるのは 1 回だけです。ページを更新すると、再度正しく検証されます。キャッシュの問題かもしれないと思ったので、新しい Date().getTime() を URL に割り当てましたが、結果は同じです。同じフォームの番号と電子メールに同じタイプの検証を使用していますが、ページを更新しなくても毎回機能します。これが私のテストフォームです。データベースの既存の日付は 2013 年 10 月 14、15、16、17 日です。データベースの日付形式は 0000-00-00 または 2013-10-14 です。既存の番号 1、2、3、および 4。既存の電子メール アドレスは you@ です。 me.com と me@you.com。値がデータベースに存在する場合、フォームを検証したくありません。ここ'

    $(document).ready(function(){
$('#fb-submit-button').attr('disabled','disabled');
var emailok = false;
var numberok = false;
var boxes = $(".fb-item");
var myForm = $("#docContainer"), 
number = $("#item3_number_1"), 
 email = $("#item4_email_1"), 
 numberInfo = $("#numberInfo"), 
 emailInfo = $("#emailInfo");


   //send ajax request to check email

email.blur(function(){
    $.ajax({
        type: "POST",
        data: "email="+$(this).attr("value"),
        url: "../../formcheck_email.php",
        beforeSend: function(){
            emailInfo.html("<font color='blue'>Checking Email...</font>");
        },
        success: function(data){
            if(data == "invalid")
            {
                emailok = false;
                emailInfo.html("<font color='red'>Invalid Email</font>");
            $('#fb-submit-button').attr('disabled','disabled');
            }
            else if(data != "0")
            {
                emailok = false;
                emailInfo.html("<font color='red'>Email Already Exist</font>");            
               $('#fb-submit-button').attr('disabled','disabled');

            }
            else
            {
                emailok = true;
                emailInfo.html("<font color='green'>Email OK</font>");
               $('#fb-submit-button').attr('disabled','');
            }
        }
      });
   });  




    //send ajax request to check number

number.blur(function(){
    $.ajax({

        type: "POST",
        data: "number="+$(this).attr("value"),
        url: "../../formcheck_number.php",
        beforeSend: function(){
            numberInfo.html("<font color='blue'>Checking Number...</font>");
        },
        success: function(data){

             if(data != "0")
            {

                numberok = false;
                numberInfo.html("<font color='red'>Number Already Exist</font>");
               $('#fb-submit-button').attr('disabled','disabled');
            }
            else
            {
                numberok = true;
                numberInfo.html("<font color='green'>Number OK</font>");
               $('#fb-submit-button').attr('disabled','');
            }
        }
       });

    });

    //send ajax request to check date


$('#fb-submit-button').attr('disabled', 'disabled');
       $('.datepicker').datepicker({
      onSelect: function(dateText) {
  $("#item61_date_1").datepicker();    
        post_date = $('.datepicker'),
        dateInfo = $('#dateInfo');

    //send ajax request to check date            

        dateInfo.html('<font color="blue">Checking Date...</font>');
           $.ajax({
                url: '../../formcheck_date.php',
                data: {post_date: $(this).val()},
                type: 'POST',
                success: function(data) {
                    dateok = (data == '0');
                    dateInfo.html('<font color="' + (dateok ? 'green' : 'red') + '">Date ' +
                          (dateok ? 'Available' : 'Already Taken') + '</font>');
                    $('#fb-submit-button').attr('disabled', dateok ? '' : 'disabled');
                }
           });

     }
  });

   });

これが私のphpデータベースの接続です。

    <?php
    require_once('pdo_connect.php');
    $post_date = $_POST['post_date'];
    $sql= "SELECT post_date FROM validation where post_date='$post_date'";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $msg = $stmt->rowCount();


    if($msg !== false) {

    echo $msg;
    }

    ?>
4

1 に答える 1