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