我一直在尝试为我正在构建的网站构建注册表单。我可以做基础知识,但我希望它检查用户名可用性而无需重新加载页面。
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脚本
<?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;
?>
当我离开文本框时,它说无论如何用户名都可用。我在数据库中放置了一个用户名"测试"...没有运气
请帮忙
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;
脚本:
<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。接下来的事情是你忘了在你的陈述的结尾放分号!
你指定$("#Username").value
你的意思是使用$("#Username").val()
?
$('#Username').value
可能会返回您的数据库中不存在的垃圾。
你使用开发者工具还是Firebug?
如果您检查 $.post 以check_username.php,很容易看出问题出在哪里:
(1) 是否发送了正确的发布请求?我认为您的数据对象应该{"username":username}
(2)你的脚本是响应true
?还是别的什么?你只知道它不会通过你的 if 语句的结构方式返回 false。