我的目的是做一个密码找回的小程序,就是当用户输入用户名,文本框失去焦点时根据数据库查询用户名并找到相应的密码提示问题。问题是如何将数据库中的值赋予html一个标签的属性。具体代码如下:
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>找回密码</title>
<script src="findpassword.js"></script>
</head>
<body>
<form>
  <p>你的用户名是:
    <input name="username" type="text" onblur="findPassword(this.value)" />
 </p>
  <p>你的提示问题是:
   
   <div id="txtHint"></div>
    </p>
  <p>你的答案是:
    <input type="text" name="answer" />
  </p>
  <input name="submit" type="submit" value="找回密码" />
</form>
</body>
</html>
var xmlHttpfunction findPassword(str)

xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request");
 return
 }
var url="findpassword.php";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged ;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}function stateChanged() 

if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
 document.getElementById("txtHint").innerHTML=xmlHttp.responseText ;
 } 
}function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}<?php
include 'findpassword.html';
$q=$_GET['q'];
include 'sql.php';
$sql="select * from findpassword where UserName='".$q."'";
$result=mysql_query($sql);
$query = mysql_fetch_array($result);
if($query)
echo $query['FindPasswordQuestion'];?>代码很简单,希望高手能够指导一下,问题出在哪,就是输入用户名,失去焦点后不显示密码提示问题,方便的话可以加qq,谢谢了

解决方案 »

  1.   

    你出什么问题报什么错没说,在出考题
    url=url+"?q="+  str;
    改成  url=url+"?q="+ encodeURIComponent(str);  
    <?php
    include 'findpassword.html';  //可以去掉
      

  2.   

    我建议你用jquery的ajax来做,那样很简单的
    var url="findpassword.php";
        url=url+"?q="+str;
        url=url+"&sid="+Math.random();
    $.get(url,function(result){
          $("#txtHint").html(result);
    })
    还有,要学会找错误,你可以一步一步来alert,看看在哪个环节上出问题了
      

  3.   

    我测试了下,你的html和js都没问题,现在问题就是你确定你的请求进入了findpassword.php文件中了吗?从你findpassword.php的第一行开始调试。
      

  4.   

    1.楼主在ajax阶段没有检查ajax对象的xmlHttp.status的值。建议alert。
    2.楼主的DIV标签的默认CSS是什么?比去DIV我习惯用span标签。
    用LZ的代码测试通过。自己编了个SQL.PHP
    所以我觉得问题不是出现在sql.php就是出现在数据库结构上,LZ的PHP文件include 'findpassword.html'不是会造成无限循环么?findpassword.HTML文件改成PHP类型。 然后include PHP处理文件是个好选择。
      

  5.   

    再补充一句比较幼稚的东西。
    要在局域网或者本机网络回路里测试。否则status的值会为0.
    一切都成浮云了
      

  6.   

    楼主我按照你的需求写了个ajax取得question的测试代码,你看看,希望对你有帮助<!--user.html--><!DOCTYPE html>
    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="./jquery.js"></script>
    </head>
    <body>
    <form>
    用户名:<input type="text" name="username" onblur="getQuestion(this.value)"><br>
    提示问题:<div id="question"></div><br>
    答案:<input type="text" name="answer"><br>
    <input type="submit" name="sub" value="找回密码">
    </form>
    </body>
    </html>
    <script type="text/javascript" language="javascript">
    function getQuestion(username){
    var quobj = document.getElementById("question");
    $.post('user.php',{user:username},
    function(data){
    quobj.innerHTML= data;
    }
    )
    }
    </script>===================================================================================//user.php
    <?php
    header("Content_Type:text/html;charset=utf-8");
    $link = mysql_connect("localhost","root","123456") or die("链接失败");
    $connect = mysql_select_db("sql_test", $link);
    mysql_query('set names utf8');
    $user = trim($_POST['user']);
    $sql  = "SELECT question FROM  tb_user WHERE name = '{$user}'";$rs=  mysql_query($sql);if($info = mysql_fetch_assoc($rs)){ echo "<font color='red'>{$info['question']}</font>";
    }else{
    echo "失败";
    }
    ?>
      

  7.   

    用firebug调一下,看看你的ajax是否请求到了php文件并得到了想要的值。btw:注意跨域问题
      

  8.   

    谢谢大家,我想知道怎么用alert检查错误,可能这个问题有些幼稚。初学php,第一次用ajax,不知道错误的原因很郁闷。