0

以下是 username.php 的代码

    <html>
  <head>
       <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
      <!-- <script type="text/javascript" src="js/jquery-ui-1.8.17.custom.min.js"></script> -->

       <script type="text/javascript">

         $(document).ready(function(){
            $("#username").change(function(){
                 $("#message").html("<img src='ajax-loader.gif' /> checking...");


            var username=$("#username").val();

              $.ajax({
                    type:"post",
                    url:"check.php",
                    data:"username="+username,
                        success:function(data){
                        if(data==0){
                            $("#message").html("Username available");
                        }
                        else{
                            $("#message").html("Username already taken");
                        }
                    }
                 });

            });

         });

       </script>
  </head>

  <body>

       <table>
        <tr>
              <td>Username</td>
              <td>:</td>
              <td><input type="text" name="id" id="username""/><td>
                <td id="message"><td>
        </tr>

        <tr>
              <td>Password</td>
              <td>:</td>
              <td><input type="text" name="password" id="password" /><td>
        </tr>
       </table>
  </body>
</html>

以及 check.php 的代码

    <?php

  mysql_connect("localhost","healhmate","healthmate");
  mysql_select_db("hmdb");
  if(isset($_POST['id']))
  $username=$_POST['id'];
  $query=mysql_query("SELECT * from user where id='$username' ");

  $find=mysql_num_rows($query);

  echo $find;

?>

此代码将输出作为用户名和密码框。我已将所有 3 个文件 ajax-loader.gif、username.php 和 check.php 包含在一个文件夹中。输入用户名时不执行验证。谁能帮我弄清楚为什么会这样?

4

2 回答 2

4
 <?php

  mysql_connect("localhost","healhmate","healthmate");
  mysql_select_db("hmdb");
  if(isset($_POST['username']))// because in ajax you send username not id
  $username=$_POST['username'];
  $query=mysql_query("SELECT * from user where id='$username' ");

  $find=mysql_num_rows($query);

  echo $find;

?>
于 2013-10-17T03:58:15.757 回答
2

在 Ajax 请求中使用 data:"id="+username,因为这是您在 PHP 中检查的 POST 变量。

另附注:确保您处理未设置 $_POST['username'] 的情况。

<?php
mysql_connect("localhost","healhmate","healthmate");
mysql_select_db("hmdb");
if(isset($_POST['username'])) {// because in ajax you send username not id
    $username=$_POST['username'];
    $query=mysql_query("SELECT * from user where id='$username' ");
    $find=mysql_num_rows($query);
   echo $find;
} else {
    echo "-1";
}
?>

并且不要使用 mysql_* 函数。它们已被弃用。使用 mysqli_* 函数或 PDO。

于 2013-10-17T03:59:24.877 回答