我一直在努力为我正在建设的网站建立一个注册表单。我可以做基础知识,但我希望它在不重新加载页面的情况下检查用户名可用性。
JAVASCRIPT
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script>
$(document).ready(function()
{
$("#Username").focusout(function()
{
//Check if usernane if available
var username = $("#Username").val();
$.post("scripts/check_username.php", {username: username}, function(data)
{
if(data == 'false')
{
alert('Username not available');
$("#Username").setCustomValidity("This username is already taken!");
}
else
{
alert('Username available');
}
});
return false;
});
});
</script>
HTML
<form id="registerForm">
<table>
<tr><td>Username</td><td><input id="Username" class='textInput' type='text' name='username' required></td></tr>
PHP SCRIPT
<?php
include 'open_connection.php';
$result = 'true';
$username = mysql_real_escape_string($_POST['username']);
$result = mysql_query("SELECT * FROM tblMembers WHERE Username='$username'");
while($row = mysql_fetch_array($result))
{
$result = 'false';
}
echo $result;
?>
当我离开文本框时,无论如何都会显示用户名。我在数据库中放置了一个用户名“test”...没有运气
请帮忙
答案 0 :(得分:1)
PHP:
$output = 'true';
$username = mysql_real_escape_string($_POST['username']);
$result = mysql_query("SELECT * FROM tblMembers WHERE Username='$username'");
while($row = mysql_fetch_array($result))
{
$output = 'false';
}
echo $output;
Ans Script:
<script>
$(document).ready(function()
{
$("#Username").focusout(function()
{
//Check if usernane if available
$.post("scripts/check_username.php", {username: $("#Username").val()}, function(data)
{
if(data =='false')
{
$("#Username").setCustomValidity("This username is already taken!");
}
else
{
alert('Username available');
}
});
return false;
});
});
</script>
顺便说一句,不要使用 mysql _ * 函数,它们已被弃用。使用Mysqli或PDO。接下来的事情是你忘了在你的陈述结束时加分号!
答案 1 :(得分:0)
您指定$("#Username").value
是否意味着使用$("#Username").val()
?
$('#Username').value
可能会回复你的数据库中不存在的垃圾。
答案 2 :(得分:0)
您使用的是开发者工具还是Firebug?
如果您检查$ .post到check_username.php,很容易看出问题出在哪里:
(1)是否发送了正确的帖子请求?我认为您的数据对象应为{"username":username}
(2)您的脚本是否回复true
?或者是其他东西?你只知道if语句的结构不会返回false。