register.php代码如下:
<head>
<script type="text/javascript">
function username_is_conform(username){ var xmlhttp;
if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if(username=="")
{ document.getElementById('username_error').innerHTML="用户名不能为空。"; }
else if(username.length>16 || username.length<6)
{ document.getElementById('username_error').innerHTML="请输入6到16个字符的用户名。"; }
else
{
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var if_exist=xmlhttp.responseText;
if(if_exist=="true")
document.getElementById('username_error').innerHTML="用户名已存在";
}
}
xmlhttp.open("GET","is_user_exist.php?username="+username,true);
xmlhttp.send();
}}
</script>
</head>
<body>
<p><strong>用 户 名: </strong><input type="text" id="UserName" name="UserName" style="color:#000" onfocus="document.getElementById('username_error').innerHTML=''" onblur="username_is_conform(this.value)"><span id="username_error" /></span></p>
</body>is_user_exist.php代码如下:
<?php $user=$_GET['username']; if($user=="")
{
echo "<meta http-equiv=\"refresh\" content=\"0;url='login.php'\">";
die();
} require('connect.inc'); mysql_select_db($dbname,$link_id); $str_sql = "select count(*) from user where UserName='$user'"; $result=mysql_query($str_sql,$link_id); $record=mysql_fetch_array($result);
if($record[0]==1)
echo "true";
mysql_close($link_id);
?>问题来了..我先手动在数据库中收到输入一条用户名为aaaaaaa的数据..然后运行register.php,在text中输入aaaaaaa,然后使text失去焦点..然后就会自动验证,按理说aaaaaa是已经存在的,所以is_user_exist.php输出的应该是true,然后用if_exist=xmlhttp.responseText接收true,也就是if_exist为true,判断if条件满足,也就会输出用户名已存在,但是没有输出,只有把if里面的==改成!=才输出,也就是说true!=true???什么情况啊...求高人指教...我快晕了
<head>
<script type="text/javascript">
function username_is_conform(username){ var xmlhttp;
if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if(username=="")
{ document.getElementById('username_error').innerHTML="用户名不能为空。"; }
else if(username.length>16 || username.length<6)
{ document.getElementById('username_error').innerHTML="请输入6到16个字符的用户名。"; }
else
{
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var if_exist=xmlhttp.responseText;
if(if_exist=="true")
document.getElementById('username_error').innerHTML="用户名已存在";
}
}
xmlhttp.open("GET","is_user_exist.php?username="+username,true);
xmlhttp.send();
}}
</script>
</head>
<body>
<p><strong>用 户 名: </strong><input type="text" id="UserName" name="UserName" style="color:#000" onfocus="document.getElementById('username_error').innerHTML=''" onblur="username_is_conform(this.value)"><span id="username_error" /></span></p>
</body>is_user_exist.php代码如下:
<?php $user=$_GET['username']; if($user=="")
{
echo "<meta http-equiv=\"refresh\" content=\"0;url='login.php'\">";
die();
} require('connect.inc'); mysql_select_db($dbname,$link_id); $str_sql = "select count(*) from user where UserName='$user'"; $result=mysql_query($str_sql,$link_id); $record=mysql_fetch_array($result);
if($record[0]==1)
echo "true";
mysql_close($link_id);
?>问题来了..我先手动在数据库中收到输入一条用户名为aaaaaaa的数据..然后运行register.php,在text中输入aaaaaaa,然后使text失去焦点..然后就会自动验证,按理说aaaaaa是已经存在的,所以is_user_exist.php输出的应该是true,然后用if_exist=xmlhttp.responseText接收true,也就是if_exist为true,判断if条件满足,也就会输出用户名已存在,但是没有输出,只有把if里面的==改成!=才输出,也就是说true!=true???什么情况啊...求高人指教...我快晕了
if(if_exist=="true")
document.getElementById('username_error').innerHTML="用户名已存在";
改成:
document.getElementById('username_error').innerHTML=if_exist;可以证明当输入已经存在的数据的时候..if_exist是为true的..我纠结的是既然if_exist为true..为什么if却无法判断...难道是编码的问题??
改成if(if_exist==true)
document.getElementById('username_error').innerHTML="用户名已存在";
}也可以在之前alert(if_exist);
alert(typeof if_exist);
看看返回的true是什么类型再加以判断。
agr为0,null,false时候才返回false,否则都返回true