使用AJAX的用户名可用性不会返回任何结果

时间:2013-09-13 00:53:45

标签: javascript php ajax

以下是检查用户名可用性的基本脚本。

我输入内容时会出现gif加载图标,但由于某些原因,没有任何反应,而应该有“OK”或“不可用”出现在#status中。

HTML:

  <label>Username</label> 
    <input type="text" class="input" name="username" id="username"/>
    <span id="status"></span>

JS部分:

<script type="text/javascript">
$(document).ready(function() {

    $("#username").change(function() {
        var username = $("#username").val();
        var msgbox = $("#status");

        if (username.length >= 4) {
            $("#status").html('<img src="images/gif/ajax-loading.gif">');

            $.ajax({
                type: "POST",
                url: "ajax_check.php",
                data: "username=" + username,
                success: function(msg) {
                     $("#status").ajaxComplete(function(event, request) {

                        if (msg === 'OK') {
                            msgbox.html('Available');
                         } else {
                             msgbox.html(msg);
                          }
                    });
                }
            });
        } else {

                $("#status").html('Cannot be less than 3  letters');
         }
        return false;
    });
});
</script>

这是ajax_check.php:

<?php
include('includes/connect.php');
if(isset($_POST['username']))
{
   $username = $_POST['username'];
   $username = mysql_real_escape_string($username);
   $rows = query("SELECT id FROM users WHERE username='$username'");

   if (count($rows) == 1) {
       echo 'not available!';
   } else  {
       echo 'OK'; 
            }
}
?>

我已经检查了查询,它运行正常。

此外, JS控制台不会报告任何错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

$(“#status”)。ajaxComplete行是不必要的。如果你成功了:function(msg)那么它就完成了。删除我在下面突出显示的行 - &gt;&gt;

 $.ajax({
     type: "POST",
     url: "ajax_check.php",
     data: "username=" + username,
     success: function(msg) {
         ->> REMOVE THIS $("#status").ajaxComplete(function(event, request) {

                    if (msg == 'OK') {
                        msgbox.html('Available');
                     } else {
                         msgbox.html(msg);
                      }
                });
            ->> AND THIS }
        });