Заполнение 2-го поля выбора значением первого поля выбора

#php #jquery #ajax #codeigniter

Вопрос:

В настоящее время у меня есть 2 поля выбора под названием Страна и город. Теперь я сделал так, чтобы данные по городу заполнялись в соответствии со значением, выбранным в стране с помощью AJAX. Для этого я использовал следующий код:

edit.php:

 lt;select name="country" onchange="getcities($(this).val())" requiredgt;  lt;option value="lt;?php echo set_value('country'); ?gt;"gt;Select Countrylt;/optiongt;  lt;?php if($countries) foreach($countries as $country): ?gt;  lt;option value="lt;?php echo $country['id']; ?gt;" lt;?php echo ($listing[0]['country'] == $country['id'])?'selected="selected"':''?gt;gt;lt;?php echo $country['name']; ?gt;lt;/optiongt;  lt;?php endforeach; ?gt; lt;/selectgt;  lt;label class="control-labels "gt;Citylt;/labelgt; lt;div id="emiratewrap"gt; lt;select name="emirate" id="emirate"gt; lt;option value=""gt;Select Citylt;/optiongt; lt;/selectgt;  

АЯКС

 $(document).ready(function () { getcities($('#country').val()); });   function getcities(obj){  console.log(obj);  var dataString = new Object();  dataString.emirate = 'lt;?php echo $property-gt;emirate ?gt;';  $.ajax({  type: "get",  dataType:"json",  url: "lt;?php echo site_url('listings/ajaxgetcitiesedit'); ?gt;/" obj,  data: dataString,  success: function(e) { $('#emiratewrap').html(e.result);  $bb = "lt;?php echo $property-gt;status; ?gt;";  if($bb=="Y") {$("#emiratewrap select").addClass("disabled"); }  }  });  }  

Контроллер:

 function ajaxgetcitiesedit($country=''){  $emirate = $this-gt;input-gt;get('emirate');  if(!$country) return false;  $cities = $this-gt;listings_model-gt;get_activepair_cities(array('country_id'=gt;$country),'*','name asc');   $html = 'lt;select name="emirate" id="emirate" class="form-control select2 required" onchange="oemirate(this);"gt;';  $html .= ($emirate lt;1)? 'lt;option value=""gt;Select Emiratelt;/optiongt;':'';   foreach($cities as $city):   $html .= 'lt;option value="'.$city['id'].'" '.($city['id'] == $emirate ? 'selected="selected"' : '').'gt;'.$city['name'].'lt;/optiongt;';   endforeach;   $html .= 'lt;option value="Other"gt;Otherlt;/optiongt; lt;/selectgt;lt;input type="text" id="other_emirate" name="other_emirate" class="form-control" style="display: none;" /gt;';  echo json_encode(array('result'=gt;$html));  }  

Сейчас я работаю над страницей редактирования, где изначально должно быть показано, какое значение пользователь выбрал при добавлении записи. На данный момент функциональность второго выбора работает нормально, как и предполагалось, поскольку он изменяет свои параметры при изменении данных 1-го выбора, а также выдает правильное значение в базе данных при нажатии кнопки обновить.

Теперь единственная проблема, с которой я сталкиваюсь, заключается в том, что изначально при загрузке на страницу она ничего не показывает во втором поле выбора, даже если для нее есть значение в базе данных. Я выполнил console.log(obj); getcities(obj) вход, и изначально он возвращался неопределенным, и каждый раз, когда я меняю страну, он дает значение в моем журнале.

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

1. Измените lt;select name="country" lt;select id="country" name="country" , пожалуйста