尝试填充2个select元素时,jQuery .change不起作用

时间:2019-03-13 20:01:28

标签: javascript jquery ajax

因此,我尝试使用PHP,MySQL和jQuery填充2个HTML下拉列表。第二个(区域)的选项将取决于第一个下拉列表(城市)中的选择。我从我的另一个工作项目中复制了代码,但无法在该项目中工作。

这是我的JavaScript代码(ajax.js):

$(document).ready(function() {
  $("#city").change(function() {
    var cityid = $(this).val();
    if(cityid != "") {
      $.ajax({
        type: 'POST',
        url: 'assets/inc/get.php',
        data: {cityid:cityid},
        success: function(response) {
          var resp = $.trim(response);
          $("#area").html(resp);
        }
      });
    } else {
      $("#area").html("<option selected disabled>Bir şehir seçiniz</option>");
    }
  });
});

get.php文件:

<?php
include('dbconfig.php');
if(isset($_POST['cityid'])){
  $cityid = mysqli_real_escape_string($conn, $_POST['cityid']);
  $query = 'SELECT * FROM `areas` WHERE `city`='.$cityid.' and `active`=1';
  $result = mysqli_query($conn,$query) or die(mysql_error());

  if(mysqli_num_rows($result) > 0) {
    echo '<option selected disabled>Bölge seçiniz</option>';
    while($row = mysqli_fetch_object($result)) {
      echo '<option value="'.$row->id.'">'.$row->name.'</option>';
    }
  }
  else {
      echo '<option selected disabled>asdBir şehir seçiniz</option>';
  }

}
?>

和HTML:

<div class="row form-group">
  <div class="col-md-6">
    <label for="city" class=" form-control-label">Şehir</label>
    <select id="city" name="city" class="form-control">
      <option selected disabled>Şehir Seçin</option>
      <?php
        $qry = 'select * from `cities` where `active`=1';
        $res = mysqli_query($conn, $qry);
        if(mysqli_num_rows($res) > 0) {
          while($row = mysqli_fetch_object($res)) {
            echo '<option value="'.$row->id.'"';
            if($_GET['d3'] == $row->id){echo ' selected';}
            echo '>'.$row->name.'</option>';
          }
        }
      ?>
    </select>
  </div>
  <div class="col-md-6">
    <label for="area" class=" form-control-label">Bölge</label>
    <select id="area" name="area" class="form-control">
    </select>
  </div>
</div>

我在开发工具中检查了网络部分,并且ajax.js加载正常。虽然当我在城市下拉列表中选择一个值时,什么都没有发生。它根本不调用get.php文件。我已经到处搜索了几个小时,而且似乎找不到任何解决方案,而且我也不知道自己在做什么错。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我终于通过将以下行添加到ajax.js文件的第一行中来对其进行了修复:

var $jq = jQuery.noConflict();

,然后在同一ajax.js文件中将每个$更改为$jq。我希望这对其他人也有帮助