在更改时重新生成下拉选项

时间:2017-11-04 22:01:42

标签: javascript php jquery mysql drop-down-menu

我有一个下拉列表,当我点击一个选项时,我希望另一个下拉列表从mysql重新生成其选项。第一个下拉列表的代码:

    <div class="form-group"> 
    <label class="col-sm-2 control-label" for="input-zone"><?php echo $_['region'];?></label> 
        <div class="col-sm-10"> 
            <select name="region_id" id="region_id" class="form-control">                    
            <?php
            include_once 'config.php';
            mysqli_query($conn,"set names 'utf8'");
            $sql = "SELECT * FROM region";
            $result = mysqli_query($conn, $sql);
            $url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 
            while ($row = mysqli_fetch_array($result)) {
                if ((strpos($url,'/gr/') == true)) {
                    $perioxi = $row['region_greek'];
                } else {
                    $perioxi = $row['region_english'];
                }
                echo "<option value='" . $row['region_id'] ."'>" . $perioxi . "</option>";
            }
            ?>
            </select>
        </div> 
        <span class="error"><?php echo $option_value_error ?></span>
    </div> 

它从mysql获取数据并生成下拉列表。 第二个下拉列表在它下面,它与第一个相似,而不是我更改查询,我希望查询是这样的

$sql = "SELECT * FROM region_prefecture WHERE region_id = '14'";

region_id是sql中的列和选项值。 所以问题是,当我点击第一个下拉列表例如值3时,我希望第二个下拉列表更新mysql中列为region_id列为3的数据。

我知道我必须使用javascript onchange功能,但我不知道如何更新它。

仅供参考:新用户注册时使用opencart是一样的。 Opencart对国家选择使用完全相同,然后在另一个下拉列表生成城市。

1 个答案:

答案 0 :(得分:0)

你必须在变更和ajax上使用jquery来实现你想要的目标。

<script>
 $(document).on("change","#region_id",function(){
  //$.ajax request, target.php is your php code that returns new option
  $.ajax({
   url: "target.php", //target.php should contain $_POST['id'], and a that would act as a return
   method: "POST",
   data: {
    id: $("#region_id").val() //get current value of region_id and send it to target.php
   },
   dataType: "text",
   success: function(data) {
    //if target.php is reached and returned data,
    //replace the option tags of prefecture_id select element
    $("#prefecture_id").html(data); //data is list of option tags returned by target.php
   }
  });
 });
</script>