0

我正在创建一个系统来检查(通过 AJAX)是否已经使用了给定的用户名。如果是这样,那么它会相应地提醒用户。我的系统基于教程,并尝试将其调整到我的站点。

$(document).ready(function()//When the dom is ready
{
  $("#username").change(function()
  { //if theres a change in the username textbox

    var username = $("#username").val();//Get the value in the username textbox
    if(username.length > 3)//if the lenght greater than 3 characters
    {
      $("#availability_status").html('<img src="loader.gif" align="absmiddle">&nbsp;Checking availability...');
      //Add a loading image in the span id="availability_status"

      $.ajax({  //Make the Ajax Request
        type: "POST",
        url: "ajax_check_username.php",  //file name
        data: "username="+ username,  //data
        success: function(server_response){

          $("#availability_status").ajaxComplete(function(event, request){

            if(server_response == '0')//if ajax_check_username.php return value "0"
            {
              $("#availability_status").html('<img src="available.png" align="absmiddle"> <font color="Green"> Available </font>  ');
              //add this image to the span with id "availability_status"
            }
            else  if(server_response == '1')//if it returns "1"
            {
              $("#availability_status").html('<img src="not_available.png" align="absmiddle"> <font color="red">Not Available </font>');
            }

          });
        }

      });

    }
    else
    {

      $("#availability_status").html('<font color="#cc0000">Username too short</font>');
      //if in case the username is less than or equal 3 characters only
    }
    return false;
  });
});

ajax_check_username.php - 这里是我认为我有问题的地方!

<?php
include ("inc/db/db.php");

if($stmt = $mysqli->prepare('SELECT NULL FROM `bruger` WHERE `brugernavn` = ?'))
{
  $stmt->bind_param('s', $brugernavn);
  $brugernavn = $_POST["brugernavn"];
  $stmt->execute();
  $stmt->store_result();
  $count = $stmt->num_rows;
  $stmt->close();
  if($count = 0)
  {
    echo '1';
  }
  else
  {
    echo '2';
  }
}
?>


<tr>
  <td><p>Brugernavn</p></td>
  <td><input type="text" name="brugernavn" id="username"></td>
  <td><span id="availability_status"></span></td>
</tr>

注意 我认为我在我的 php 中犯了错误,所以这可能是为什么它不费心去做我想做的事.. 但这只是我想的时候。

当我需要检查数据库中的用户名时,这就是我的 html 查找的内容。这就是我完全没有错误的方式。必须说我以前从未玩过 ajax 或 javascript。所以如果你能进一步帮助我,那将是一个很大的帮助。

随意询问是否还有更多您想知道的东西。

4

2 回答 2

0

if($count = 0)应该是if($count == 0)如果这会影响您的逻辑。

于 2012-10-05T03:16:21.323 回答
0

您在使用它$brugernavn 后进行分配。

$stmt->bind_param('s', $brugernavn);
$brugernavn = $_POST["brugernavn"];

在这里使用ajaxComplete没有用:

$("#availability_status").ajaxComplete(function(event, request){

您正在分配应该比较的位置:

if($count = 0)

您的 Javascript 需要一个0or 1,但您的 PHP 脚本输出一个1or 2

于 2012-10-05T03:18:57.983 回答