зависимое поле выбора не загружается

#php #jquery #ajax

Вопрос:

у меня есть несколько кодов, которые должны извлекать данные из базы данных и отображать их в виде полей выбора в зависимости от первого выбора.

В index.php у меня есть код jquery .change(функция () {..}), который должен заполнить второе поле выбора при изменении первого, и я думаю, что проблема здесь, потому что я проверил инструменты разработчика в chrome, action.php должно быть загружено на вкладке сеть, если действие load_month отправляется ajax и этого никогда не происходит.

Может ли кто-нибудь помочь выяснить, в чем проблема ?

function.php

 function fill_product_list($connect) {  $query =   SELECT * FROM product   WHERE product_status = 'active'   ORDER BY product_name ASC  ";  $statement = $connect-gt;prepare($query);  $statement-gt;execute();  $result = $statement-gt;fetchAll();  $output = '';  foreach($result as $row)  {  $output .= 'lt;option value="'.$row["product_id"].'"gt;'.$row["product_name"].'lt;/optiongt;';  }  return $output; }  function fill_month_list_product_wise($connect, $poduct_id) {  $query = "  SELECT * FROM month  INNER JOIN stock ON stock.month_id = month.month_id  WHERE stock.product_id = '".$product_id."'  ORDER BY monat_id ASC  ";  $statement = $connect-gt;prepare($query);  $statement-gt;execute();  $result = $statement-gt;fetchAll();  $output = 'lt;option value=""gt;date of delivery lt;/optiongt;';  foreach($result as $row)  {  $output .= 'lt;option value="'.$row["month_id"].'"gt;'.$row["month_name"].'lt;/optiongt;';  }  return $output; }  

index.php

 lt;div class="form-group"gt;  lt;labelgt;productslt;/labelgt;  lt;hr /gt;  lt;span id="span_product_details"gt;lt;/spangt;  lt;hr /gt; lt;/divgt;  lt;scriptgt; function add_product_row(count = '')  {  var html = '';  html  = 'lt;span id="row' count '"gt;lt;div class="row"gt;';  html  = 'lt;div class="col-md-8"gt;';  html  = 'lt;select name="product_id[]" id="product_id" class="form-control selectpicker" data-live-search="true" requiredgt;';  html  = 'lt;?php echo fill_product_list($connect); ?gt;';  html  = 'lt;/selectgt;lt;input type="hidden" name="hidden_product_id[]" id="hidden_product_id' count '" /gt;';  html  = 'lt;select name="month_id[]" id="month_id' count '" class="form-control selectpicker" data-live-search="true" requiredgt;';  html  = 'lt;/selectgt;lt;input type="hidden" name="hidden_month_id[]" id="hidden_month_id' count '" /gt;';  html  = 'lt;/divgt;';  html  = 'lt;div class="col-md-3"gt;';  html  = 'lt;input type="text" name="quantity[]" class="form-control" required /gt;';  html  = 'lt;/divgt;';  html  = 'lt;div class="col-md-1"gt;';  if(count == '')  {  html  = 'lt;button type="button" name="add_more" id="add_more" class="btn btn-success btn-xs"gt; lt;/buttongt;';  }  else  {  html  = 'lt;button type="button" name="remove" id="' count '" class="btn btn-danger btn-xs remove"gt;-lt;/buttongt;';  }  html  = 'lt;/divgt;';  html  = 'lt;/divgt;lt;/divgt;lt;br /gt;lt;/spangt;';  $('#span_product_details').append(html);   $('.selectpicker').selectpicker();  }   var count = 0;   $(document).on('click', '#add_more', function(){  count = count   1;  add_product_row(count);  });  $(document).on('click', '.remove', function(){  var row_no = $(this).attr("id");  $('#row' row_no).remove();  });  // Here is the Problem, the action load_month never execute   $('#product_id').change(function(){  var product_id = $('#product_id').val();  var btn_action = 'load_month';  $.ajax({  url:"action.php",  method:"POST",  data:{product_id:product_id, btn_action:btn_action},  success:function(data)  {  $('#month_id').html(data);  }  });  });  lt;/scriptgt;   

action.php

 if(isset($_POST['btn_action'])) {  if($_POST['btn_action'] == 'load_month')  {  echo fill_month_list_product_wise($connect, $_POST['product_id']);  } }  

Комментарии:

1. когда будет вызвана эта функция add_product_row? Я не вижу никакого идентификатора, загруженного для его вызова.

2. @PHPHuppTechnologies здесь после var count =0; $(документ).on(«нажмите», «#add_more», функция(){ count = количество 1; add_product_row(количество); });

3. Подсказки: 1) Идентификаторы должны быть уникальными в html-документе (по определению, в этом весь смысл идентификатора). Вы не можете выбрать более одного элемента с одним и тем же идентификатором, но ваша функция добавления строки продолжает создавать больше раскрывающихся списков с одним и тем же идентификатором. Вместо этого используйте класс для определения раскрывающихся списков. 2) вам нужно узнать о делегировании событий, чтобы вы могли написать код, который обрабатывает события для элементов, которые еще не существуют на странице, когда объявлен обработчик событий.