1

我有一个 html 表单,下拉列表中的国家/地区来自数据库。如果用户选择任何国家,那么城市下拉菜单将根据所选国家出现。

如果用户错误地输入了表单的任何字段(此表单中还有其他字段),那么国家下拉菜单将记住用户最初选择的国家,但清除城市,将其重置为--Select City--。我正在尝试选择城市名称,但我不能。任何想法 ?

Ajax 代码在这里:

<script type="text/javascript" src="http://ajax.googleapis.com/
ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$(".country").change(function()
{
var id=$(this).val();
var dataString = 'id='+ id;

$.ajax
({
type: "POST",
url: "ajax_city.php",
data: dataString,
cache: false,
success: function(html)
{
$(".city").html(html);
} 
});

});
});
</script>

ajax_city.php 在这里

<?php
require_once("toplevel/content/database/databd.php");
if($_POST['id'])
{
$id=$_POST['id'];
$sql=mysql_query("select Name from cities WHERE CountryCode ='$id'");

while($row=mysql_fetch_array($sql))
{
$id=$row['Code'];
$data=$row['Name'];

if($_POST['city'] == $data)
{
    $sel = 'selected = "selected"'; 
}
else
{
    $sel = " ";
}

echo '<option value="'.$data.'" ' .$sel . ' >'.$data.'</option>';
} 
}
?>

此处为 HTML 格式:

<tr>
    <td>PAYS <span style="color: #FF0000;">*</span></td>
    <td>
<select name="country" class="country">
<option value="">Select</option>

<?php
    $sql=mysql_query("select * from country");
    while($row=mysql_fetch_array($sql))
    {
    $id=$row['Code'];
    $data=$row['Name'];

    $data = mb_convert_encoding($data, 'UTF-8');

if($id == $_POST['country'])
    {
        $sel = 'selected="selected"';
    }
    else
    {
        $sel = "";
    }

    echo '<option value="'.$id.'"' . $sel . '>'.$data.'</option>';
    }
?>
</select>   
</td>
</tr>   

<tr>
<td>City</td>
    <td>
    <select class="city" name="city">
<option selected="selected" value="">--Select City--</option>
</select>   
    </td>
</tr>
4

2 回答 2

0

不太确定,但问题在于datastring尝试更改:

 $(".country").change(function(){
     var id=$(this).val();
     var dataString = {'id': id};

     $.ajax({
        type: "POST",
        url: "ajax_city.php",
        data: dataString,
        cache: false,
        success: function(html){
           $(".city").html(html);
        } 
     });
});
于 2013-03-22T17:54:57.217 回答
0

您将需要在重新加载时重建 HTML,但现在使用您的城市列表(这是未经测试的,但基于国家下拉列表中的代码):

<tr>
    <td>City</td>
    <td>
        <select class="city" name="city">
            <option selected="selected" value="">--Select City--</option>
            <?php
                if (isset($_POST['city']) {
                    $sql=mysql_query("select * from city");
                    while($row=mysql_fetch_array($sql))
                    {
                        $id=$row['Code'];
                        $data=$row['Name'];

                        $data = mb_convert_encoding($data, 'UTF-8');

                        if($id == $_POST['city']) { $sel = 'selected="selected"'; }
                        else { $sel = ""; }

                        echo '<option value="'.$id.'"' . $sel . '>'.$data.'</option>';
                    }
                }
            ?>
        </select>   
    </td>
</tr>

警告:这只是相同的示例代码。这永远不应该投入生产,因为它有可能非常不安全!正如@PolishPrince 上面指出的那样,您至少应该使用 PDO 或 MySQLi。

于 2013-03-22T18:02:52.280 回答