Postingan lainnya
Kelas Premium!
Belajar Javascript untuk website
Gunakan kupon "mulaijs" untuk diskon 75 ribu!
Ajax tidak langsung menghasilkan response ketika di web hosting
Halo, ada yang mau saya tanyakan tentang ajax.
Saya mempunyai aplikasi web dengan framework CODEIGNITER yang CRUD nya menggunakan JQUERY AJAX. Ketika masih develop di localhost ajax berjalan dengan sempurna, tetapi setelah saya upload ke web hosting tidak berjalan semestinya, lebih tepatnya hanya saat READ (tampil data) memanggil function json dari database dan data tidak langsung muncul. Tapi saat direload page berulang-ulang kadang muncul.
Berikut script View, Controller, dan Modelnya.
View
// SUBMIT
$('#formBarcode').submit(function(e){
e.preventDefault();
var id = $('#idBarang').val();
if (id == '') {
alertGagalTambah();
} else {
$.ajax({
url: '<?= site_url('persediaan/cetak_pricetag/tambah') ?>',
type: 'post',
data: $(this).serialize(),
success: function(){
sndAdd();
tampilData();
$('#barcode').focus();
$('#formBarcode').trigger('reset');
}
});
}
});
// TAMPIL DATA
function tampilData()
{
$.ajax({
url: "<?= site_url('persediaan/cetak_pricetag/tampil_data') ?>",
async : false,
dataType : 'json',
success: function(data){
if (data != '') {
var html = '';
var i;
for(i=0; i<data.length; i++){
html += '<tr>'+
'<td class="text-center">'+
'<a href="javascript:void(0)" title="Cetak" class="text-muted mr-3 font-size-15" id="btnCetak" data-id="'+data[i].id_pricetag+'" data-barcode="'+data[i].barcode_barang+'"><i class="fas fa-print"></i></a>'+
' '+
'<a href="javascript:void(0)" title="Hapus" class="text-muted font-size-15" id="btnHapus" data-id="'+data[i].id_pricetag+'"><i class="far fa-trash-alt"></i></a>'+
'</td>'+
'<td>'+data[i].barcode_barang+'</td>'+
'<td>'+data[i].nama_barang+'</td>'+
'<td class="text-right">Rp '+$.number(data[i].harga_eceran_barang, 2)+'</td>'+
'<td class="d-flex justify-content-center">'+
'<div class="input-group input-group-sm" style="width: 100px;">'+
'<input type="text" value="'+data[i].jumlah_pricetag+'" class="spin" id="spin'+data[i].id_pricetag+'" style="text-align: center;" data-id="'+data[i].id_pricetag+'">'+
'</div>'+
'</td>'+
'</tr>';
}
$('#tampilData').html(html);
} else {
html = '<tr>'+
'<td colspan="5" class="text-center">Tidak ada data</td>'+
'</tr>';
$('#tampilData').html(html);
}
}
});
$('.spin').TouchSpin({min: 1, max: 10000});
}
Controller
public function tampil_data()
{
$data = $this->cetak_pricetag_m->tampil_data()->result();
echo json_encode($data);
}
Model
function tampil_data()
{
$user = $this->fungsi->user_login()->id_user;
$this->db->from('cetak_pricetag');
$this->db->join('barang', 'barang.id_barang = cetak_pricetag.id_barang_pricetag', 'left');
$this->db->where('id_user_pricetag', $user);
$query = $this->db->get();
return $query;
}
InterfaceTampilan, ketika diklik icon "search" untuk submit
Ketika submit akan melakukan tambah data ke database dengan ajax (untuk ini berjalan normal). Dan setelah sukses akan meload function "tampilData".
Tetapi ketika function "tampilData" terpanggil tidak "langsung" mendapat response, hanya "[]".
Hasil Response kosong "[]"
image.png
Dan ketika saya reload berulang-ulang atau menunggu beberapa dan melakukan submit baru bisa muncul.
Yang jadi pertanyaan saya kepada teman-teman, apakah ada yang salah dalam setting hostingnya (karena di localhost beralan sempurna) atau ada salah dalam codenya?
Respon teman-teman sangat membantu saya. Terima kasih banyak :D
3 Jawaban:
<div>Coba fungsi tampilData nya jadi asynchronous, async nya ubah jadi true</div>
<div>coba ubah</div><pre>url: '<?= site_url('persediaan/cetak_pricetag/tambah') ?>'</pre><div>menjadi</div><pre>url: "<?= site_url('persediaan/cetak_pricetag/tambah') ?>"</pre>
<div>Maaf telat respon teman2, sebelumnya terima kasih buat teman2 yang udah membantu menjawab :)<br>dari semua jawaban teman2 sudah saya coba dan tidak berhasil, tetapi saat saya coba menambahkan type: 'post' di function tampilData itu berhasil :D tetapi sebelum2nya itu tidak terlalu berpengaruh mau pakai type atau tidak. Mungkin dari teman2 ada yang tau penyebabnya :D<br><br>Sekali lagi terima kasih banyak!</div>