在这方面看到了很多线程,但不确定是否与我正在做的事情有关。我尝试了一些“解决方案”,但都无济于事。这是我的一段代码:
<td><select name="County" onChange="getCity('findcity.php?county='+this.value)">
……
<td><fieldset id="f2">
<select name="Town">
<option value="Any">Any Town</option>
</select>
</fieldset>
</td></tr>
……
</td></tr>
<tr>
<td><fieldset id="f4">
<input type="submit" name="Search!">
</fieldset>
</form>
</td>
</tr>
Town Select 一开始只是作为一个占位符。在更改第一个下拉列表时,然后通过 getCity() 函数填充第二个。它将选定的值传递给 findcity.php,然后使用 mysql 通过 findcity.php 填充它,然后用重复项替换 TOWN 选择:
MySQL 生成一个:(有效)
<select name="Town">
<option value="Any">Any Town</option>
<? while($row=mysql_fetch_array($result)) { ?>
<option value="<?=$row['dir_town']?>"><?=$row['dir_town']?></option>
<? } ?>
</select>
这是完成所有工作的函数:
<script>
function getXMLHTTP() { //function to return the xml http object
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getCity(strURL) {
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('f2').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
</script>
GET 上的最终结果是这样的:
results.php?County=Kent&Sector=Any&Search%21=Submit
如果我什么都不做就提交它会起作用:
results.php?County=Bedfordshire&Town=Any&Sector=Any&Search%21=Submit
我想是因为它没有取代输入框。我使用了字段集,希望消除我认为是因为它在 DIV 中而引起的问题。
叹息,我知道有一个简单的解决方案,我只是不记得是什么。
此外,如果您告诉我如何从请求中删除“&Search..”部分,则可以加分:S 不知道为什么搜索按钮会将其自身放入其中,它在我所做的任何其他作品中从未有过,是因为字段集?我期待任何答案,在此先感谢。
编辑:如果有人甚至可以提供另一种方法来填充第二个下拉菜单并解决这个问题,我会很满意。
$county=$_GET['county'];
//$county =mysql_real_escape_string($county);
include('includes/dbc.php');
$query="SELECT DISTINCT `dir_town` FROM `directories` WHERE `dir_county` = '$county' ORDER BY `dir_town` ASC";
$result=mysql_query($query);?>
<select name="Town">
<option value="Any">Any</option>
<? while($row=mysql_fetch_array($result)) { ?>
<option value="<?=$row['dir_town']?>"><?=$row['dir_town']?></option>
<? } ?>
</select>
我的 dbc.php 完成所有连接。