2013-11-23 42 views
0

我在运行以下脚本时遇到问题。它除了AJAX部分以外正确运行。它不会调用URL“check_username.php”。我检查了数据库连接。与数据库没有连接

任何帮助将不胜感激。 感谢

jQuery代码 -

<script type="text/javascript"> 


$(document).ready(function() { 


     //the min chars for username 
     var min_chars = 3; 

     //result texts 
     var characters_error = 'Minimum amount of chars is 3'; 
     var checking_html = '<img src="images/loading.gif" /> Checking...'; 

     //when button is clicked 
     $('#check_username_availability').click(function(){ 
      //run the character number check 
      if($('#username').val().length < min_chars){ 
      //if it's bellow the minimum show characters_error text 
      $('#username_availability_result').html(characters_error); 
     }else{   
      //else show the cheking_text and run the function to check 
      $('#username_availability_result').html(checking_html); 
      check_availability(); 
     } 
    }); 


}); 

//function to check username availability 
function check_availability(){ 

    //get the username 
    var username = $('#username').val(); 

    //use ajax to run the check 

    $.post("check_username.php", { username: username }, //This part is not being executed . 
     function(result){ 
      //if the result is 1 
      if(result == 1){ 
       //show that the username is available 
       $('#username_availability_result').html('<span class="is_available"><b>' +username + '</b> is Available</span>'); 
      }else{ 
       //show that the username is NOT available 
       $('#username_availability_result').html('<span  class="is_not_available"><b>' +username + '</b> is not Available</span>'); 
       } 
     }); 

} 
</script>` 

check_username.php -

<?php 


mysql_connect('localhost', 'root', ''); 
mysql_select_db('modal'); 


$username = mysql_real_escape_string($_POST['username']); 


$result = mysql_query("SELECT username FROM users WHERE username=`$username`"); 
$num_rows = mysql_num_rows($result); 


//if number of rows fields is bigger them 0 that means it's NOT available ' 
if($numrows>0) { 
echo 0; 

}else{ 

    echo 1; 
} 

?> 
+0

控制台中有任何错误? – leonardeveloper

+0

使用您选择的浏览器中的开发人员控制台查看服务器对$ .post请求的实际响应是什么,以及提供了哪些参数。您的SQL查询是错误的,因为它会检索表中的所有用户,而不仅仅是您要查找的用户名。 – MatsLindh

+0

在控制台中没有错误 –

回答

0

你的查询将返回users所有行,因为你没有指定任何特定的。所以$result将保持检索到的第一行(并且你不能确定它是哪一个)。你基本上是检查一个随机行的用户名。如果你想迭代所有行,你可以用while ($result = mysql_fetch_array(mysql_query(..)))来做到这一点,但我会建议使用SQL。

$result = mysql_query("SELECT username FROM users WHERE username=`$username`"); 
$num_rows = mysql_num_rows($result); 
echo $num_rows; 
  • 查询

    SELECT username FROM users WHERE username=`$username` 
    

    现在将所有行username==$username。所以你会得到0或1行(总而言之,而不是#of_users之前)。

  • mysql_num_rows将计算返回的行数为0或1,因此您可以直接打印它。

而且记住,mysql_*功能officially deprecated,因此不应在新代码中使用。您可以改用PDO或MySQLi。有关更多信息,请参阅this answer on SO

+0

其实我的ajax函数没有调用这个php文件。还有其他的选择吗? –