-2

jquery で検証プラグインを使用すると、奇妙な問題が発生します。これは数回尋ねられたようですが、私の問題に対する答えが見つかりません。フォームがあり、電子メールが既に入力されているかどうかを確認しようとしています。入力されている場合、ユーザーはフォームを送信できないはずです。さまざまな変数を出力するために FirePHP を使用しています。ここで、クエリの戻り値が常に「1」であることに気付きました (これは間違っています)。ただし、(PhpMyAdmin を使用して) データベースに手動でクエリを実行すると、正しい答え (「0」) が表示されます。

これが私のjsです:

    // validate signup form on keyup and submit
$("#register").validate({
    rules: {
        ......
        email: {
            required: true,
            email: true,
            remote: "check_email.php" , async:false 
        }, 
    },
    messages: {
                     ......
        email: {required: "Please enter an email address", email: "Please enter a valid email address", remote: "This email is already registered" },
        }
    }
});

});

そして、これがデータベース接続後の私のphpです...

$form_email = $_GET['email'];
fb($form_email);


$sql = "SELECT COUNT(*) AS num_rows FROM users WHERE email = " . "'" . $form_email . "'"; 
fb($sql);
$result = $conn->query($sql);
fb($result->num_rows);

if ($result->num_rows == 0) {
    echo 'true';
    fb("true");
} else {
       echo 'false';
    fb("false");
 }

存在しないメールアドレスを入力しても、常に「1」が返ってきます。

私も返してみました

echo json_encode('true');

うまくいくかもしれないどこかを読んだので、助けにはなりませんでした。PHP で応答が常に間違っているのはなぜですか?

4

1 に答える 1

0

ルールの構文がremote正しくありません:

rules: {
    ......
    email: {
        required: true,
        email: true,
        remote: "check_email.php" , async:false 
    }, 
}

あなたが書いた方法では、プラグインはasync単なる別のルールと見なされています。のような「ルール」がないためasync、プラグインはチョークします。

ドキュメントに従って、これを試してください:

rules: {
    ......
    email: {
        required: true,
        email: true,
        remote: "check_email.php"
    }
}

またはこれ...

rules: {
    ......
    email: {
        required: true,
        email: true,
        remote: {
            url: "check_email.php", 
            async: false 
        }
    } 
}

デモ: http://jsfiddle.net/KkBSY/

于 2013-04-01T21:17:09.590 に答える