Ajax检查用户名无效


Ajax check username not working

我在一个网站上创建了一个注册页面,目前我正在尝试实现AJAX用户名检查功能。我的问题是,当在输入字段中键入用户名时,它根本不会运行。

任何帮助都将不胜感激。

注册页面

<html>
    <head>
        <title>Sign up Fabio's</title>
        <link rel="icon" href="Images/Pizza.ico">
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
        <link href="mystyle.css" rel="stylesheet" type="text/css" />
      <script type="text/javascript" src="js/jquery-1.9.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $("#Username").keyup(function (e) {
        var username = $(this).val();
            $.post('usernamecheck.php', {'username':username}, function(data) {
              $("#user-result").html(data);
        }
    }); 
});
</script>
    </head>
<body>
<div id="Content2">
<form action="newuser.php" class="form" method="post" onsubmit="return validateForm()" >
        <h1>Sign Up</h1>
           <label for="Title">Title </label><br>
        <select name="Title" >
                 <option value="Mr">Mr</option>
                 <option value="Mrs">Mrs</option>
                 <option value="Ms">Ms</option>
                 <option value="Miss">Miss</option>
                 </select></br>
        <label for="FirstName">First name</label> <input type="text" name="FirstName" required></br>
        <label for ="LastName">Last name</label><input type="text" name="LastName" required></br>
        <label for="Username">Username</label> <input type="text" name="Username" required><span id ="user-result"></span>
        <label for="Email">Email</label> <input type="email" name="Email" required>
        <label for ="Password1">Password</label><input type="password" name="Password1" id ="Password1" required></br>
            <label for="Password2">Confirm Password </label><input type="password" name="Password2" id="Password2" required></br>
            <input type="submit" value="Sign Up"> 
 </form>
</div>
</body>
</html>

用户名检查.php

<?php
if(isset($_POST["username"]))
{
    include 'dbconnect.php';
    $connection = mysqli_connect($db_host, $db_username, $db_password, $db_database);
    // Check connection
    if (mysqli_connect_errno($connection)) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    $username = $_POST["username"];
    $result = mysqli_query($connection, "SELECT Id From Userv2 WHERE Username = '$username'");
    $username_true = mysqli_num_rows($result);
    if($username_true >0){
        echo "Sorry $username has been taken";
        }
    else{
        echo "$username is available";
    }
    mysqli_close($connection);
}

首先:keyUp未分配给输入字段,请确保username的输入字段ID为ID="username"

也可以试试下面的代码。我添加了一个控制台日志,看看是否会到达并执行post功能。如果在控制台中收到邮件,请告诉我

<script type="text/javascript">
$(document).ready(function() {
    $("#Username").keyup(function (e) {
        var username = $(this).val();
            $.post('usernamecheck.php', {'username':username}, function(data) {
              $("#user-result").html(data);
console.log('the post is done');
        }
    }); 
});
</script>

您没有关闭$.post()。尝试使用:

<script type="text/javascript">
$(document).ready(function() {
    $("#Username").keyup(function (e) {
        var username = $(this).val();
            $.post('usernamecheck.php', {'username':username}, function(data) {
              $("#user-result").html(data);
        }); // closes $.post()
    }); 
});
</script>

警告:您在usernamecheck.php中出现SQL注入错误:

    $username = $_POST["username"];

替换为:

      $username = mysqli_real_escape_string($connection, $_POST["username"]);