0

メールを入力すると、メールを使用できるか(dbに存在しない)、使用できないか(dbに存在する)が自動的に表示されます。入力しても表示される出力はありません。現在、このコードがあります。これをどのように修正すればよいですか

これが私のメインページのコードです

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Jquery-ajax Practice</title>
</head>

<body>
<section>
    <form>
        <label for="text_email">E-mail:</label>
        <input id="text_email" type="email" >

        <script type="text/javascript" charset="utf-8" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js">
            $(document).ready(function(){
                $('#text_email').keyup(function(){
                    email($(this).val());
                });
            });
            function email(str){
                $.post('checkmail.php',{ email: str},
                function(data){
                    $('#check_email').html(data.returnValue);
                }, 'json');
            }
        </script>

        <label for="text_email" id="check_email"></label>   
    </form>
</section>
</body>
</html>

これが私のphpコードです

<?php
if(isset($_POST['email']))
{
    try 
    {
        $pdo=new PDO('mysql:host=localhost;dbname=class;charset=utf-8', 'root');
    }
    catch(PDOException $e)
    {
        echo 'Failed: '.$e->getMessage();
    }

    $stmt=$pdo->prepare('SELECT email FROM class where email=:email LIMIT 1');
    $stmt->execute(array(':email'=>$_POST['email']));
    if($stmt->rowCount()>0)
    {
        $check='E-mail cannot be use.';
    }
    else
    {
        $check='E-mail can be use.';
    }

    echo json_encode(array('returnValue'=>$check));
}
?>
4

1 に答える 1

1

私が見ることができる問題の1つは、データベースエラーの処理です。

すべてのPDO操作を(接続部分だけでなく) try-catchブロックでラップする必要があります。エラーが発生した場合はjson_encode、受信したものを無効にするため、エコーアウトするだけでなく、最後にステートメントでラップする必要があります。クライアント側のjson。

データベースの設定はわかりませんが、パスワードを入力していないため、接続文字列に。が必要だと思いますcharset=utf8

于 2012-08-27T17:51:28.273 に答える