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>用&nbsp;户&nbsp;名:&nbsp;&nbsp;</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???什么情况啊...求高人指教...我快晕了

解决方案 »

  1.   

    把SQL语句打印出来,然后在mysql客户端执行以下,看看结果是否正确
      

  2.   

    我有试过把
      if(if_exist=="true")
        document.getElementById('username_error').innerHTML="用户名已存在";
    改成:
      document.getElementById('username_error').innerHTML=if_exist;可以证明当输入已经存在的数据的时候..if_exist是为true的..我纠结的是既然if_exist为true..为什么if却无法判断...难道是编码的问题??
      

  3.   

    if(if_exist=="true")
    改成if(if_exist==true)
      

  4.   

      if(if_exist=="true"){
      document.getElementById('username_error').innerHTML="用户名已存在";
    }也可以在之前alert(if_exist);
    alert(typeof if_exist);
    看看返回的true是什么类型再加以判断。
      

  5.   

      if(if_exist) 里面是boolean值,加引号是string类型,检查下类型
      

  6.   

    另外,javascript中,if(agr){}
    agr为0,null,false时候才返回false,否则都返回true