我有三个下拉列表:国家、州和城市。
我想根据国家列表中的选择填充州列表,并根据州列表中的选择填充城市列表。
这是我尝试过的方法
从国家列表中,我使用 onchage 事件调用 java 脚本函数。
<select name="country" id="id1" onchange="onCountryChange(this.value)">
然后我向服务器发送请求以获取与国家相关联的州名。
function onCountryChange(str){ if (window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); } else{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById("statenames").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","./view/countrychange.php?countryname="+str,true); xmlhttp.send(); }
我使用以下代码获取状态值。
<?php $countryname=$_GET["countryname"]; $connection = pg_connect("host=localhost port=5432 dbname=STAGE2 user=postgres password=jssate"); if (!$connection){ echo "<H1>Error in connection to Database</H1>"; echo "<H2>Please try again</H2>."; } else{ $query1="Select distinct(state) from master_table where country='$countryname'"; $result = pg_query($connection,$query1); $numrows = pg_numrows($result); if ($numrows>0){ echo "State <select name="state" id="stateid">; for ($row_index=0;$row_index<$numrows;$row_index++) { $state_name=pg_result($result,$row_index,0); echo "<option value="$state_name\">$state_name</option>"; } echo "</select>"; } } pg_close($connection); ?>
3 .在我的客户端使用以下代码来显示结果。
<div id="statenames">
//Original select list placed here is replaced by the one returned by server.
</div>
这对我有用,并且州是根据国名填充的。现在我如何填充第三个列表。我选择的显示状态列表的方法是否正确?因为我无法控制我现在得到的状态选择列表。