Javascript 检查用户名的Ajax请求
我正在用HTML/CSS/JS创建一个注册表单,它使用AJAX请求从服务器获取响应。在jQuery中,我使用一个方法验证表单内容,该方法还调用一个函数(包含ajax)来查看用户名是否存在。我已经检查了类似的问题,但与我的问题无关 AJAX包含在这样一个函数中Javascript 检查用户名的Ajax请求,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我正在用HTML/CSS/JS创建一个注册表单,它使用AJAX请求从服务器获取响应。在jQuery中,我使用一个方法验证表单内容,该方法还调用一个函数(包含ajax)来查看用户名是否存在。我已经检查了类似的问题,但与我的问题无关 AJAX包含在这样一个函数中 function checkIfUserNameAlreadyExists(username) { // false means ok, i.e. no similar uname exists $.ajax ({
function checkIfUserNameAlreadyExists(username)
{
// false means ok, i.e. no similar uname exists
$.ajax
({
url : 'validateUsername.php',
type : 'POST',
data : {username:username},
success : function(data,status)
{
return data;
}
});
}
<?php
if($_SERVER['REQUEST_METHOD']=='POST')
{
$enteredLoop=false;
$linkobj = new mysqli('localhost','root','','alumni');
$query = "select username from user where username='".$uname."'";
$stmt = $linkobj->prepare($query);
$stmt->execute();
$stmt->bind_result($uname);
while($stmt->fetch())
$enteredLoop=true;
if($enteredLoop)
{
echo "
<script type='text/javascript'>
$('.unamestar').html('Sorry username already exists');
$('.userName').css('background-color','rgb(246, 71, 71)');
$('html,body').animate({
scrollTop: $('.userName').offset().top},
'slow');
</script>";
return;
}
}
?>
PHP代码如下所示
function checkIfUserNameAlreadyExists(username)
{
// false means ok, i.e. no similar uname exists
$.ajax
({
url : 'validateUsername.php',
type : 'POST',
data : {username:username},
success : function(data,status)
{
return data;
}
});
}
<?php
if($_SERVER['REQUEST_METHOD']=='POST')
{
$enteredLoop=false;
$linkobj = new mysqli('localhost','root','','alumni');
$query = "select username from user where username='".$uname."'";
$stmt = $linkobj->prepare($query);
$stmt->execute();
$stmt->bind_result($uname);
while($stmt->fetch())
$enteredLoop=true;
if($enteredLoop)
{
echo "
<script type='text/javascript'>
$('.unamestar').html('Sorry username already exists');
$('.userName').css('background-color','rgb(246, 71, 71)');
$('html,body').animate({
scrollTop: $('.userName').offset().top},
'slow');
</script>";
return;
}
}
?>
您的checkIfUserNameAlreadyExists()
函数是同步的,您的ajax调用是异步的。这意味着您的函数将在ajax调用完成之前返回一个值(实际上,在您的情况下根本不会返回任何值…)
解决这个问题的最简单方法是,根据数据
变量的返回值,在success函数中生成html
比如:
success : function(data,status) {
if (data === 'some_error') {
// display your error message, set classes, etc.
} else {
// do something else?
}
}
除此之外,您是否实际将$uname
的值设置为$\u POST['username']
?您需要将响应脚本附加到文档以执行
function checkIfUserNameAlreadyExists(username)
{
// false means ok, i.e. no similar uname exists
$.ajax
({
url : 'validateUsername.php',
type : 'POST',
data : {username:username},
success : function(response)
{
$('body').append(response);
}
});
}
如何调用checkIfUserNameAlreadyExists()
?如何在PHP代码中获得$uname
?如果在循环时不呈现的任何输出,那么我认为最好使用If rowCount()>0
。