jquery method post ($.post())

permisi gan, mau nanya gimana caranya biar si method post nya itu cuman ngirim 1 request aja, misal koneksi internet nya lemot na si user ngirim request nya banyak karena ga terpenuhi terus(ga ada data yang di hasil). nah caranya biar ngirim 1 request aja gimana?? jadi nanti saat koneksinya udah lancar lagi ga numpuk

avatar sukmaw
@sukmaw

340 Kontribusi 75 Poin

Diperbarui 6 tahun yang lalu

7 Jawaban:

UPP GAN

avatar sukmaw
@sukmaw

340 Kontribusi 75 Poin

Dipost 6 tahun yang lalu

Jawaban Terpilih

setelah user ngeklik tombol submit, langsung didisable aja attribute buttonnya via javascript

$('.button').on('click',function() {
    $(this).prop("disabled",true);
});
avatar hilmanski
@hilmanski

2665 Kontribusi 2131 Poin

Dipost 6 tahun yang lalu

jadi ketika pertama2 button nya di click, buttonya di disabled..

terus waktu masuk ke method

 $.post('url', {data}, function(data){
 di sini disabled nya jadi false
})

gitu bang??

avatar sukmaw
@sukmaw

340 Kontribusi 75 Poin

Dipost 6 tahun yang lalu

untuk solusi disabled itu memang button tidak bisa di click bang... tapi waktu saya menggunakan event keypress dan keycode == 13 untuk enter atau menjalankan fungsi click button nya, button nya masih bisa di klik

nah terus saya nemu code ini bang...

 $.ajaxSetup({async: false});

kode di atas bisa mengatasi masalahnya tapi di browser agak jadi lag dan ada warning seperti ini di console

 XMLHttpRequest sinkron pada utas utama sudah usang karena berdampak negatif pada pengalaman pengguna akhir. Untuk bantuan lebih lanjut kunjungi http://xhr.spec.whatwg.org/
avatar sukmaw
@sukmaw

340 Kontribusi 75 Poin

Dipost 6 tahun yang lalu

UP GAAAAANNN

avatar sukmaw
@sukmaw

340 Kontribusi 75 Poin

Dipost 6 tahun yang lalu

jangan pake async false, jelas itu bikin browser enduser nge lag. javascript sangat cepat karena default behaviournya asynchronous, dengan setting async false jadinya synchronous, semua process terhambat nunggu ajax call selesai.

kalau mau toggle button berdasar ajax call pake promise chain

$('.button').on('click',function()
{
    var _this = this
    $(this).prop("disabled", true);
    $.post('url', {data}, function(data)
    {
        // olah data yg diterima
    })
    .always(function()
    {
        // di sini disabled nya jadi false
        $(_this).prop("disabled", false);
    });
});

always() chain itu pasti jalan, mau hasil ajaxnya success atau error. jadi setelah ajax call selesai button otomatis enabled lagi.

avatar rachmatsasongko
@rachmatsasongko

410 Kontribusi 426 Poin

Dipost 6 tahun yang lalu

sipp terimakasih solusi disabled nya

avatar sukmaw
@sukmaw

340 Kontribusi 75 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban