Я хочу выбрать цепочку из выпадающего списка, чтобы получить адреса, в то время как пользователь выбирает страну выбора Индонезия, затем отображает выбор страны штата Джакарта, или пользователь выбирает страну Малайзия, а затем отображает страну выбора Сабах.
ниже таблицы MySQL
Countries table
+--ID--+----Negara----+
| 1 | Indonesia |
| 2 | Malaysia |
+------+--------------+
States table
+--ID--+---countrie_id---+---Provinsi----+
| 1 | 1 | Jakarta |
| 2 | 1 | Bali |
| 3 | 2 | Sabah |
| 4 | 2 | Serawak |
+------+-----------------+----------------+
результат, который я хочу, ниже
select options countries
<select name="countrie">
<option>Indonesia</options>
</select>
select options states
<select name="states">
<option>Jakarta</option>
<option>Bali</option>
</select>
контроллер Страны
public function index(){
$negara = $this->Countries->find('all')->extract('Negara');
$this->set(compact('negara'));
}
public function getCountries(){
$negara = $this->Countries->find('all')->extract('Negara');
return $this->response
->withType('application/json')
->withStringBody(json_encode([
'jQueryNegara' => $negara,
'result' => $result
]));
}
контроллер состояний
public function index(){
$provinsi = $this->States->find('all')->extract('Provinsi');
$this->set(compact('provinsi'));
}
public function getStates(){
$provinsi = $this->Countries->find("all")->extract('Provinsi');
return $this->response
->withType('application/json')
->withStringBody(json_encode([
'jQueryProvinsi' => $provinsi,
'result' => $result
]));
}
Форма ввода городов add.ctp
<?= $this->Form->control('countrie_id', [
'type' => 'select',
'id' => 'jQueryNegara',
'options' => $negara
]); ?>
<?= $this->Form->control('province_id', [
'type' => 'select',
'id' => 'jQueryProvinsi',
'options' => $provinsi
]);
?>
jQuery ajax внутри городов add.ctp
$(function(){
$('#negara').on('change', function() {
var id = $(this).val();
var targeturl = '<?= Router::url(["controller"=>"countries","action"=>"getCountries"]); ?>';
if(id == '-1'){
$('#provinsi').html(`<option value="-1">Select State</option>`);
}else{
$("#divLoading").addClass('show');
$('#provinsi').html(`<option value="-1">Select State</option>`);
$.ajax({
type:'post',
url: targeturl,
data:'id='+id+'&type=state',
dataType: 'json',
success:function(result){
$("#divLoading").removeClass('show');
$('#provinsi').append(result);
}
});
}
});
});
Я попытался повторить и исправить ошибку, но все равно не работает. Спасибо за кого-то, кто хочет помочь мне