使用AJAX填充HTML表单的代码不起作用?什么';这是交易


Code to populate HTML form using AJAX not working? What's the deal?

好的,所以我正在开发一个网站,该网站有一个下拉菜单供用户选择学校名称。一旦他们选择了学校名称,地址、邮政编码、县和地区字段就会自动填充。

遗憾的是,实际上我在几个小时前就已经完成了这项工作,但作为我自己,我愚蠢地试图完善我的代码,却没有保存我所拥有的副本。现在形态种群不再起作用。然而,老实说,我觉得我应该使用我现有的代码。我很困惑。

有人能看看我的代码,告诉我为什么它不起作用吗?非常感谢。

我的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"吗?