我正在尝试使用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;
}
答案 0 :(得分:1)
由于您使用的是文本框的keyup
事件,请使用blur
或change
事件的文本框。
修改强>
更改
if(result == $('#loginusername').val())
到
if(result == '')
因为在找不到匹配项时发送空白结果。
答案 1 :(得分:0)
好吧,在你的JS中,你正在比较用户输入的内容与PHP脚本返回的内容:
result == $('#loginusername').val()
但您的PHP脚本唯一可以返回的是字符串'username exists'或空字符串:
if($count == 1){
$HTML='username exists';
}else{
$HTML='';
}
尝试使用alert(result)
。
答案 2 :(得分:0)
var timer;
var time = 2000;
$('input').keyup(function() {
// when user stop typing for {time} second, do next function
timer= setTimeout(doSomething, time);
)
$('input').keydown(function() {
// when user continue typing clear timer
clearTimeout(timer);
)
function doSomething() {
}
试试这个
答案 3 :(得分:0)
将echo $HTML;
更改为echo '{"success":"true", "usernameExists":"' + $count + '"}';
然后将您的Javascript修改为此
...
$.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');
}
}
});
答案 4 :(得分:0)
而不是使用keyup使用'onchange'
答案 5 :(得分:0)
您可以使用.blur
触发器。 http://api.jquery.com/blur/
// --- 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');
}
}
});
}
});
答案 6 :(得分:0)
首先,您应该更改触发支票代码的事件。现在你每次keyup
开火。我建议将此更改为change
$('#loginusername').change(function() {
第二,你的json响应存在问题。在您的PHP端,您在找不到用户名时使用空字符串进行响应,并在找到用户名时使用错误消息。但是,当字符串可用时,您的javascript端期望返回值与用户在文本框中键入的用户名相同。
要满足此要求,请更改代码的php端。
$HTML='';
if($count == 1){
$HTML='username exists';
}else{
$HTML=$_POST['username'];
}