PHP Ajax没有显示

PHP Ajax没有显示,php,javascript,xml,ajax,while-loop,Php,Javascript,Xml,Ajax,While Loop,我试图使用PHP和Ajax从MySQL数据库显示数据,但是while循环没有在下拉列表中显示我的数据。我是否有语法错误?这是我的密码: <html> <head> <script type="text/javascript"> function showUser(str){ if (str == "") { document.getElementById("txtHint").in

我试图使用PHP和Ajax从MySQL数据库显示数据,但是while循环没有在下拉列表中显示我的数据。我是否有语法错误?这是我的密码:

<html>
<head>
    <script type="text/javascript">
        function showUser(str){
            if (str == "") {
                document.getElementById("txtHint").innerHTML = "";
                return;
            }
            if (window.XMLHttpRequest) {
                // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
            }
            else {// code for IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function(){
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
                }
            }
            xmlhttp.open("GET", "getuser.php?q=" + str, true);
            xmlhttp.send();
        }
    </script>
</head>
<body>
    <form>
        <select name="users" onchange="showUser(this.value)">
            <option value="">Select a person:</option>
            <option value="1">Peter Griffin</option>
            <option value="2">Lois Griffin</option>
            <option value="3">Glenn Quagmire</option>
            <option value="4">Joseph Swanson</option>
        </select>
    </form>
    <br/>
    <div id="txtHint">
        <b>Person info will be listed here.</b>
    </div>
</body>
</html>

函数showUser(str){
如果(str==“”){
document.getElementById(“txtHint”).innerHTML=“”;
返回;
}
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”、“getuser.php?q=“+str,true”);
xmlhttp.send();
}
选择一个人:
彼得·格里芬
路易斯·格里芬
格伦泥潭
约瑟夫·斯旺森

此处将列出人员信息。
php文件:

<?php
$q=$_GET["q"];

$con = mysql_connect('localhost', 'djronlove', 'Djronlove');
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
 mysql_select_db("djronlove", $con);

 $sql="SELECT * FROM user WHERE id = '".$q."'";

  $result = mysql_query($sql);

  echo "<table border='1'>
  <tr>
  <th>Firstname</th>
  <th>Lastname</th>
  <th>Age</th>
  <th>Hometown</th>
  <th>Job</th>
  </tr>";

  while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "<td>" . $row['Age'] . "</td>";
  echo "<td>" . $row['Hometown'] . "</td>";
  echo "<td>" . $row['Job'] . "</td>";
  echo "</tr>";
  }
  echo "</table>";

  mysql_close($con);
  ?> 


url是

如果数据库表的名称是正确的,那么这个while循环应该可以工作

while($row = mysql_fetch_array($result), MYSQL_ASSOC){
    echo "<tr>";
    echo "<td>" . $row['FirstName'] . "</td>";
    echo "<td>" . $row['LastName'] . "</td>";
    echo "<td>" . $row['Age'] . "</td>";
    echo "<td>" . $row['Hometown'] . "</td>";
    echo "<td>" . $row['Job'] . "</td>";
    echo "</tr>";
}
while($row=mysql\u fetch\u array($result),mysql\u ASSOC){
回声“;
回显“$row['FirstName']”;
回显“$row['LastName']”;
回显“$row['Age']”;
回显“$行[“家乡]”;
回显“$row['Job']”;
回声“;
}

检查此项

如果数据库表的名称正确,则此while循环应该可以工作

while($row = mysql_fetch_array($result), MYSQL_ASSOC){
    echo "<tr>";
    echo "<td>" . $row['FirstName'] . "</td>";
    echo "<td>" . $row['LastName'] . "</td>";
    echo "<td>" . $row['Age'] . "</td>";
    echo "<td>" . $row['Hometown'] . "</td>";
    echo "<td>" . $row['Job'] . "</td>";
    echo "</tr>";
}
while($row=mysql\u fetch\u array($result),mysql\u ASSOC){
回声“;
回显“$row['FirstName']”;
回显“$row['LastName']”;
回显“$row['Age']”;
回显“$行[“家乡]”;
回显“$row['Job']”;
回声“;
}

检查此

问题在于您的数据库查询没有返回任何结果

问题在于您的数据库查询没有返回任何结果

我没有看到任何明显的错误。如果是我的项目,我会这么做:

1) 首先看看你的php文件是否被使用代理调用。这将帮助您确定错误是来自客户端代码还是php代码。(就我个人而言,我使用——它有一个免费版本,你可以试用。我买了一个许可证,它值每一分钱)

2) 我将使用一个javascript库来简化ajax过程以实现跨浏览器兼容性,而不是尝试使用直接的javascript来实现ajax。我建议使用jquery,如果您的问题在客户端代码中,这将特别有用

3) 如果您的问题在于PHP代码,请在整个PHP文件中向自己回显数据以查明问题所在

4) 我还将在mysql中启用错误报告功能,以便在您进行此类测试时,如果您的查询导致错误,您将看到:

$result = mysql_query($sql) or die(mysql_error());

我没有看到任何明显的错误。如果是我的项目,我会这么做:

1) 首先看看你的php文件是否被使用代理调用。这将帮助您确定错误是来自客户端代码还是php代码。(就我个人而言,我使用——它有一个免费版本,你可以试用。我买了一个许可证,它值每一分钱)

2) 我将使用一个javascript库来简化ajax过程以实现跨浏览器兼容性,而不是尝试使用直接的javascript来实现ajax。我建议使用jquery,如果您的问题在客户端代码中,这将特别有用

3) 如果您的问题在于PHP代码,请在整个PHP文件中向自己回显数据以查明问题所在

4) 我还将在mysql中启用错误报告功能,以便在您进行此类测试时,如果您的查询导致错误,您将看到:

$result = mysql_query($sql) or die(mysql_error());

那么,您确定您的SQL代码正在返回值,并且您正在请求SQL注入攻击。您得到响应了吗?尝试警报
(xmlhttp.responseText)
紧接着
xmlhttp.onreadystatechange
作为建议,我建议您使用jQuery ajax,但这不是这个问题的解决方案。:)那么,您确定您的SQL代码正在返回值,并且您正在请求SQL注入攻击。您得到响应了吗?尝试警报
(xmlhttp.responseText)
紧接着
xmlhttp.onreadystatechange
作为建议,我建议您使用jQuery ajax,但这不是这个问题的解决方案。:)我的列名错了。我有身份证而不是人名谢谢。没问题。我同意其他人的观点,即您应该确保有人没有对您的用户输入进行SQL注入攻击。这只是一个测试数据库,我刚刚删除了它。所以我很感谢你的关注。我的列名错了。我有身份证而不是人名谢谢。没问题。我同意其他人的观点,即您应该确保有人没有对您的用户输入进行SQL注入攻击。这只是一个测试数据库,我刚刚删除了它。所以我很好,谢谢你的关注。