Php 检查数据库中的文本字段值

Php 检查数据库中的文本字段值,php,jquery,mysql,Php,Jquery,Mysql,我正在尝试使用jquery和php检查插入用户名是否正确。。若用户名和数据库中的值不匹配,则应触发一个警报,提示“您的用户名错误” 我试过了,但我想不出来。当我为每个字母键入用户名警报消息时。但在文本字段中输入后,我需要用数据库检查给定值 这是我的Jquery- // --- Check Username Availability for successful login --- // $('#loginusername').keyup(function() { va

我正在尝试使用jquery和php检查插入用户名是否正确。。若用户名和数据库中的值不匹配,则应触发一个警报,提示“您的用户名错误”

我试过了,但我想不出来。当我为每个字母键入用户名警报消息时。但在文本字段中输入后,我需要用数据库检查给定值

这是我的Jquery-

    // --- Check Username Availability for successful login --- //
    $('#loginusername').keyup(function() {
      var checkname=$(this).val();
      var availname=remove_whitespaces(checkname);
      if(availname!=''){
         var String = 'username='+ availname;

         $.ajax({
                type: "POST",
                url: "emailCheck.php",
                data: String,
                cache: false,
                success: function(result){
                    var result=remove_whitespaces(result);
                    if(result == $('#loginusername').val()){
                        alert('Your entered Username is ok');                           
                    } else {
                        alert('Your entered Username is wrong');                                                            
                    }
                }
            });
      }
   });  
这是来自emailCheck.php的

if(isset($_POST['username']) && !empty($_POST['username'])){
   $userName = mysqli_real_escape_string($dbc, $_POST['username']);

    $q = "SELECT username FROM userlogin 
            WHERE username = '$userName'";
   $r = mysqli_query($dbc, $q);

   $count = mysqli_num_rows($r);

    $HTML='';
   if($count == 1){
      $HTML='username exists';
   }else{
      $HTML='';
   }

    echo $HTML;
}

因为您正在使用文本框的
keyup
事件,所以请使用文本框的
blur
change
事件

编辑

改变

 if(result == $('#loginusername').val())


因为在没有找到匹配项时发送的是空白结果。

在JS中,您将用户输入的内容与PHP脚本返回的内容进行比较:

result == $('#loginusername').val()
但PHP脚本只能返回字符串“username exists”或空字符串:

if($count == 1){
  $HTML='username exists';
}else{
  $HTML='';
}
尝试只使用
警报(结果)


试试这个

Change
echo$HTML
to
echo'{“success”:“true”,“usernameExists”:“+$count+”}”
然后将您的Javascript修改为


您可以使用
.blur
触发器,而不是使用“onchange”键控


}))

首先,您应该更改触发检查代码的事件。现在,您可以在每次
按键时开火。我建议将此更改为
change

$('#loginusername').change(function() {
其次,json响应存在问题。在php端,当找不到用户名时,将使用空字符串进行响应,当找到用户名时,将显示错误消息。但是javascript端希望返回值与字符串可用时用户在文本框中键入的用户名相同

为了满足这个要求,我们可以更改代码的php端

 $HTML='';
   if($count == 1){
      $HTML='username exists';
   }else{
      $HTML=$_POST['username'];
   }

你的代码在哪里停止工作?是否调用了.keyup?您可以将检查绑定到
keyup
事件,而不是绑定到
change
事件,该事件在您离开该输入字段时触发。@cars10我使用
change
进行了尝试。然后,它总是转到ajax成功函数的其他部分。当您使用POST发送数据时,您必须以对象格式将其包括在内,如
数据:{username:availname}
,发送字符串
'username='+availname
将不起作用。我尝试了
模糊
更改
。但它始终是ajax成功功能的另一部分。还尝试在成功函数的其他部分使用
警报(结果)
。然后警告“用户名存在”字符串。感谢所有的回答。我尝试在ajax成功函数的其他部分使用
alert(result)
,然后它警告“用户名存在”字符串。
$.ajax({
                type: "POST",
                url: "emailCheck.php",
                data: {username: availname},
                cache: false,
                success: function(result){
                    if(result.usernameExists == 1){
                        alert('Your entered Username is ok');                           
                    } else {
                        alert('Your entered Username is wrong');                                                            
                    }
                }
            });
// --- Check Username Availability for successful login --- //
$('#loginusername').blur(function() {
  var checkname=$(this).val();
  var availname=remove_whitespaces(checkname);
  if(availname!=''){
     var String = 'username='+ availname;

     $.ajax({
            type: "POST",
            url: "emailCheck.php",
            data: String,
            cache: false,
            success: function(result){
                var result=remove_whitespaces(result);
                if(result == $('#loginusername').val()){
                    alert('Your entered Username is ok');                           
                } else {
                    alert('Your entered Username is wrong');                                                            
                }
            }
        });
  }
$('#loginusername').change(function() {
 $HTML='';
   if($count == 1){
      $HTML='username exists';
   }else{
      $HTML=$_POST['username'];
   }