0

我有三个下拉列表:国家、州和城市。

我想根据国家列表中的选择填充州列表,并根据州列表中的选择填充城市列表。

这是我尝试过的方法

  1. 从国家列表中,我使用 onchage 事件调用 java 脚本函数。

    <select name="country" id="id1" onchange="onCountryChange(this.value)">
    
  2. 然后我向服务器发送请求以获取与国家相关联的州名。

    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();
     }
    
  3. 我使用以下代码获取状态值。

    <?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>

这对我有用,并且州是根据国名填充的。现在我如何填充第三个列表。我选择的显示状态列表的方法是否正确?因为我无法控制我现在得到的状态选择列表。

4

1 回答 1

0

在您的 html 页面中创建 3 个选择国家、城市和州的选择

  • 只有国家选择元素将有选项,州和城市将为空。
  • 在更改国家/地区发送事件和 ajax 请求以获取状态时,作为响应仅发送选项元素不要像您所做的那样将它们包装在 SELECT 中
  • 将这些选项推送到 state 的 select 元素中

    document.getElementById('state').innerHTML(state_ajax_response);

然后在您的 html 文件中创建将在状态选择更改时调用的函数,并再次为城市选择重复该过程

希望你能明白。

只需发送选项元素作为响应。

于 2012-05-16T17:59:33.487 回答