好的,所以我正在开发一个网站,该网站有一个下拉菜单供用户选择学校名称。一旦他们选择了学校名称,地址、邮政编码、县和地区字段就会自动填充。
遗憾的是,实际上我在几个小时前就已经完成了这项工作,但作为我自己,我愚蠢地试图完善我的代码,却没有保存我所拥有的副本。现在形态种群不再起作用。然而,老实说,我觉得我应该使用我现有的代码。我很困惑。
有人能看看我的代码,告诉我为什么它不起作用吗?非常感谢。
我的PHP代码:
<?php
$searchtext = $_GET['name'];
$db = mysql_connect("localhost", "root", "");
if(!$db) {
die("Unable to connect to DB: " . mysql_error());
}
$useDB = mysql_select_db('hsmathcontest');
if (!$db) {
die("Use database failed: " . mysql_error());
}
$schoolID = mysql_query("SELECT ID,address,city,state,zip FROM schools WHERE name = '"$searchtext'"");
if (!$schoolID) {
die("Query failed: " . mysql_error());
}
$row = mysql_fetch_row($schoolID);
$ID = $row[0];
$addr = $row[1];
$city = $row[2];
$state = $row[3];
$zip = $row[4];
$county = mysql_query("SELECT ID,name FROM county WHERE schoolID = '"$ID'"");
if (!$county) {
die("Query failed: " . mysql_error());
}
while ($row = mysql_fetch_array($county)) {
$countyID = $row[0];
$countyName = $row[1];
}
$district = mysql_query("SELECT ID,district FROM district WHERE ID = '"$countyID'"");
if (!$district) {
die("Query failed: " . mysql_error());
}
$row = mysql_fetch_array($district);
$districtID = $row[0];
$districtName = $row[1];
$fullAddress = $addr." ".$city." ".$state;
$data = $fullAddress . "," . $zip . "," . $countyName . "," . $districtName;
echo $data;
?>
还有我的Javascript代码:
function populateForm() {
//get school chosen by user
var schoolSelected = document.getElementById("schoolName").value;
var XHR = new XMLHttpRequest();
XHR.open('GET', "lookup.php?name="+schoolSelected, true);
XHR.onreadystatechange = function(){
try {
if(XHR.readyState === 4 && XHR.status === 200) {
var data = XHR.responseText.split(",");
document.getElementById('address').innerHTML = data[0];
document.getElementById('zip').innerHTML = data[1];
document.getElementById('county').innerHTML = data[2];
document.getElementById('district').innerHTML = data[3];
}
}
catch (e) {
console.error('The server signalled a problem: ' + e.description);
}
}
XHR.send();
}
最后,表单本身,其中populateForm()函数被称为onchange:
<form name="register" method = "POST" action="<?PHP $_SERVER['PHP_SELF'] ?>">
If you have already registered please click <a href = "JavaScript:void(0);" onClick = "goToLogin();">here</a> to login to your account.<br />
*All fields required.*<br /><br />
School Name: * <select id = "schoolName" name = "schoolName" required onchange = "populateForm();">
<option></option>
查看您上传的代码后,发现您试图在register.js中填充的"address"、"zip"等字段都是输入字段,因此您需要使用.value而不是.innerHTML:
document.getElementById('address').value=data[0];
等等。。。刚检查过,效果很好。
您确定此查询正确吗:
从地区中选择ID,地区,其中ID=''"$countyID''"
看起来你正在通过提供相同的ID来查找和ID…你确定它不应该是"countyID"吗?