Profil detayı eklendi, herkes profillerine girip bir gözatsın! Sevdiğiniz üyelerin cevaplarını takip edin! Tüm güncellemeler

Ajax fonksiyon sorunu

Merhaba herkese. Şöyle bir sorunla karşı-karşıyayım.


var lastclick = null;
var URL = '/showdetail';


function showAjax(URL, showID, detail, divID, successCallback) {

    if (lastclick != showID) {

        $.ajax({
            type: "POST",
            url: URL,
            data: detail,
            dataType: 'html',
            beforeSend: function () {
                $('#' + divID).html('<div id="loading"><img src="/assets/img/loading.svg"/></div>');
            },
            success: function (cevap) {

                successCallback(cevap);

                console.log(lastclick = showID);

                $('#' + divID).show();

            },
            error: function () {
                alert('dondu');
            }
        })

    } else {

        console.log(lastclick = null);
        $('#' + divID).remove();
    }

}


$(document).on("click",".more",function () {

    var showID = $(this).attr("id");
    var detail = 'id=' + showID;
    var divID = 'showdetail';

    showAjax(URL, showID, detail, divID, function (cevap) {

        $('#' + divID).append();

    });
});


Ana sayfada .more div classına tıklanan vakit ajax ile içeriği sorunsuz çekiyorum. Ama bir kaç defa aynı id sahip içeriğe tıkladığımda donup kalıyor ve içeriği çekmiyor. Sorunu çöze bilmiş değilim. Eğer ilk tıklamalarda sorunsuz veriyi çekiyorsa 4-5 ci tıklamada neden donsun?

1

Cevaplar (1)

İşlem devam ediyor, lütfen bekleyin..
Emre KILIÇ
Doğru Cevap
@adorratm
3 ay önce

hocam burda id kullanmak yerine bir data-id kullansanız daha mantıklı olurdu aslında sadece id kullandığınız için sayfada idlerin çakışması söz konusu olabilir veya aynı id ye sahip içerikler olabilir belki.


$(document).on("click",".more",function (e) { // fonksiyon içerisine e eklendi
    e.preventDefault();// eklendi
    e.stopImmediatePropagation();// eklendi
    var showID = $(this).attr("id");
    var detail = 'id=' + showID;
    var divID = 'showdetail';

    showAjax(URL, showID, detail, divID, function (cevap) {

        $('#' + divID).append();

    });
});

şeklinde değiştirmenizde fayda var.


Cevapla @BahlulHasanli3 ay önce
@adorratm, teşekkür ederim, denedim hocam ama sorun devam ediyor malesef
Cevapla @BahlulHasanli3 ay önce
@adorratm, data-id diye değiştirdim ama yine aynı. İD-ler bir yerde çakışıyor ama nerede
İşlem devam ediyor, lütfen bekleyin..

Cevap yaz Sadece sorunun cevabını yazın

Yabancı Dizi Arşivi