Reputation: 1441
I know this is a very basic Ajax question. I have been searched for all possible answer but none work for me. So here is the situation
This is my HTML code
<div class="form-group">
<label class="font-normal">Kota/Kabupaten</label>
<div class="input-group text">
<select id="frm_provinsi" class="frm_provinsi form-control" name="frm_provinsi">
<option></option>
<option value="Bahamas">Bahamas</option>
<option value="Bahrain">Bahrain</option>
<option value="Bangladesh">Bangladesh</option>
<option value="Barbados">Barbados</option>
<option value="Belarus">Belarus</option>
<option value="Belgium">Belgium</option>
<option value="Belize">Belize</option>
<option value="Benin">Benin</option>
</select>
</div>
</div>
Here is my Ajax code:
$('#frm_provinsi').on('change', function() {
var nilai = $(this).val();
console.log(nilai);
if (nilai !== '') {
$.post({
type: 'POST',
url: 'index.php',
data: { frm_provinsi: nilai },
contentType: 'application/x-www-form-urlencoded',
dataType: 'text',
})
.done(function(respon) {
console.log(respon);
// Tampilkan hasilnya di halaman web
$('#hasil').html('Provinsi: ' + respon.nama_provinsi);
})
.fail(function(xhr, status, error) {
console.log(xhr.responseText);
});
} else {
console.log('Nilai tidak boleh kosong');
}
});
Here is my PHP code:
var_dump($_REQUEST);
It just empty everytime I change selection on the select field. I can see Ajax sends data via browser debug console. If I manually POST the form the PHP receives all values. Additional info I work under Inspina template. Thanks for any help and response.
Here are some updates I made: Scenario:
Ajax
$('#frm_provinsi').on('change', function() {
var nilai = $(this).val();
console.log(nilai);
if (nilai !== '') {
event.preventDefault();
$.post({
type: 'POST',
url: '',
data: $.param({ frm_provinsi: nilai }),
success: function(respon) {
document.getElementById("frm_kota").innerHTML = respon;
},
//contentType: 'application/x-www-form-urlencoded',
cache: false,
})
.done(function(respon) {
console.log(respon);
// Tampilkan hasilnya di halaman web
$('#frm_provinsi').html('Provinsi: ' + respon.nama_provinsi);
})
.fail(function(xhr, status, error) {
console.log(xhr.responseText);
});
} else {
console.log('Nilai tidak boleh kosong');
}
});
PHP
if (isset($_POST['frm_provinsi'])) {
$smarty->assign('prov', $_REQUEST['frm_provinsi']);
$GetDaftarKota = DB::query("SELECT id_kemendagri, nama_kota FROM `kota` WHERE LEFT(id_kemendagri, 2) = '".$_POST['frm_provinsi']."'");
//print_r ($GetDaftarKota);
$FormData = NULL;
foreach($GetDaftarKota as $me) {
$FormData .= "<option value=\"".$me['id_kemendagri']."\">".$me['nama_kota']."</option>\n";
}
$smarty->assign('daftarKota', $FormData);
}
Here is frm_provinsi items
<select id="frm_provinsi" class="frm_provinsi form-control" name="frm_provinsi">
<option></option>
<option value="11">Aceh (NAD)</option>
<option value="12">Sumatera Utara</option>
<option value="13">Sumatera Barat</option>
<option value="14">Riau</option>
<option value="15">Jambi</option>
<option value="16">Sumatera Selatan</option>
<option value="17">Bengkulu</option>
<option value="18">Lampung</option>
<option value="19">Kepulauan Bangka Belitung</option>
<option value="21">Kepulauan Riau</option>
<option value="31">DKI Jakarta</option>
<option value="32">Jawa Barat</option>
<option value="33">Jawa Tengah</option>
<option value="34">DI Yogyakarta</option>
<option value="35">Jawa Timur</option>
<option value="36">Banten</option>
<option value="51">Bali</option>
<option value="52">Nusa Tenggara Barat (NTB)</option>
<option value="53">Nusa Tenggara Timur (NTT)</option>
<option value="61">Kalimantan Barat</option>
<option value="62">Kalimantan Tengah</option>
<option value="63">Kalimantan Selatan</option>
<option value="64">Kalimantan Timur</option>
<option value="65">Kalimantan Utara</option>
<option value="71">Sulawesi Utara</option>
<option value="72">Sulawesi Tengah</option>
<option value="73">Sulawesi Selatan</option>
<option value="74">Sulawesi Tenggara</option>
<option value="75">Gorontalo</option>
<option value="76">Sulawesi Barat</option>
<option value="81">Maluku</option>
<option value="82">Maluku Utara</option>
<option value="91">Papua</option>
<option value="92">Papua Barat</option>
<option value="93">Papua Selatan</option>
<option value="94">Papua Tengah</option>
<option value="95">Papua Pegunungan</option>
<option value="96">Papua Barat Daya</option>
By default frm_kota is empty like shown here
<select id="frm_kota" class="frm_kota form-control" name="frm_kota">
<option></option>
And when one of frm_provinsi item is selected, it calls Ajax and successfully load frm_city and populated to frm_kota
<select id="frm_kota" class="frm_kota form-control" name="frm_kota">
<option></option>
<option value="12.01">Tapanuli Tengah</option>
<option value="12.02">Tapanuli Utara</option>
<option value="12.03">Tapanuli Selatan</option>
<option value="12.04">Nias</option>
<option value="12.05">Langkat</option>
<option value="12.06">Karo</option>
<option value="12.07">Deli Serdang</option>
<option value="12.08">Simalungun</option>
<option value="12.09">Asahan</option>
<option value="12.10">Labuhanbatu</option>
<option value="12.11">Dairi</option>
<option value="12.12">Toba</option>
<option value="12.13">Mandailing Natal</option>
<option value="12.14">Nias Selatan</option>
<option value="12.15">Pakpak Bharat</option>
<option value="12.16">Humbang Hasundutan</option>
<option value="12.17">Samosir</option>
<option value="12.18">Serdang Bedagai</option>
<option value="12.19">Batu Bara</option>
<option value="12.20">Padang Lawas Utara</option>
<option value="12.21">Padang Lawas</option>
<option value="12.22">Labuhanbatu Selatan</option>
<option value="12.23">Labuhanbatu Utara</option>
<option value="12.24">Nias Utara</option>
<option value="12.25">Nias Barat</option>
<option value="12.71">Kota Medan</option>
<option value="12.72">Kota Pematangsiantar</option>
<option value="12.73">Kota Sibolga</option>
<option value="12.74">Kota Tanjung Balai</option>
<option value="12.75">Kota Binjai</option>
<option value="12.76">Kota Tebing Tinggi</option>
<option value="12.77">Kota Padangsidimpuan</option>
<option value="12.78">Kota Gunungsitoli</option>
The problem is what the browser rendered for the frm_kota item is a combination between frm_provinsi + frm_kota (please check screenshot, because I can not reproduce it in code)
As you can see in kota/kabupaten after Papua Barat Daya which is a provinsi name and it has to be member of frm_provinsi while after it there is Tapanuli Tengah and so on which is the correct member off frm_city
Upvotes: 1
Views: 98