2014-05-19 32 views
0

我的代码取自http://www.w3schools.com/php/php_ajax_database.asp,但我修改后更适合我,但它不能正常工作。PHP,AJAX无法显示基于下拉列表的值

Afile.php

<head> 
    <script> 
     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", "getDescription.php?q=" + str, true); 
      xmlhttp.send(); 
     } 
    </script> 
</head> 
<body> 

    <form> 
     <select name="users" onchange="showUser(this.value)"> 
      <?php 
       $comCtrl = new company_controller(); 
       $companyArray = $comCtrl->retrieveAllCompany(); 
       foreach($companyArray as $com) { 
        echo "<option value ='".$com."' >".$com."</option>"; 
       }//end foreach 
      ?> 
     </select> 
    </form> 
    <br> 
    <div id="txtHint"><b>Person info will be listed here.</b></div> 
</body> 

getDescription.php

<?php 

require_once('dbManager.php'); 


    $q = intval($_GET['q']); 

    $dbMgr = new dbManager(); 
    $conn = $dbMgr->getDBConnection();  
    $query = "select company_address from company where company_name = '$q'"; 

    $result = mysql_query($query); 


    echo "<table border='1'>"; 

    while($row = mysql_fetch_assoc($result)) { 
    echo "<tr>"; 
    echo "<td>" . $row['company_address'] . "</td>"; 
    echo "</tr>"; 
    } 
    echo "</table>"; 

    $dbMgr->closeDBConnection($conn); 
?> 

dbManager.php

<?php 
//require('/config/config.php'); 
require(dirname(__FILE__) . '\..\config\config.php'); 
class dbManager{ 

    function getDBConnection(){ 
     // start connection 
     $connect = mysql_connect(DB_HOST, DB_USER, DB_PASS); 

     if (!$connect) 
     { 
      die('Could not connect: '.mysql_error()); 
     } 

     // Select the database 
     if(!mysql_select_db(DB_NAME)) 
     { 
      die('The database - '. DB_NAME .' does not exist!'); 
     } 
     return $connect; 
    } 
    function closeDBConnection($connect){ 
     // close the connection 
     mysql_close($connect); 
    } 
} 
?> 

我EXPEC与网站上显示的结果相同。 相反,当我第一次运行这些文件时,我会看到一个包含所有公司值的下拉列表(ddl),在ddl下面是文本“此处将列出人员信息”。当我点击ddl时,我希望公司的地址能够在文本的div位置填充,但是另一个ddl出现在第一个ddl下面。所以现在我在第一行有一个ddl,在第二行有另一个ddl,以及同样的文本“人员信息将在此处列出”。我错过了什么?

+0

'“选择公司company_address其中COMPANY_NAME = ''。$ q。“'”;'这可以写成如下:''从c选择company_address ompany where company_name ='$ q''; –

+0

在它使用mysqli的示例网站中,在这里您使用的是mysql..by mysql的方式是deprated,它的不安全 –

+0

你没有得到任何输出或获得意想不到的输出 –

回答

0

我会建议你使用mysqli_query()PDO::query()

这是所需的语法mysql_query()

mysql_query(query,$conn); 

使用:

$q = trim($_GET['q']); 
相关问题