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,以及同样的文本“人员信息将在此处列出”。我错过了什么?
'“选择公司company_address其中COMPANY_NAME = ''。$ q。“'”;'这可以写成如下:''从c选择company_address ompany where company_name ='$ q''; –
在它使用mysqli的示例网站中,在这里您使用的是mysql..by mysql的方式是deprated,它的不安全 –
你没有得到任何输出或获得意想不到的输出 –