İçeriğe geç

Ajax Request Retry When HTTP Status 4xx-5xx

$(function() {
    // AJAX isteklerini izlemek için bir deneme sayısı haritası
    var retryCounts = {};

    // Tüm AJAX istekleri için bir filtre tanımlayın
    $.ajaxPrefilter(function(options, originalOptions, jqXHR) {
        // Anahtar olarak AJAX URL'sini kullanarak deneme sayısını saklayın
        if (!retryCounts[options.url]) {
            retryCounts[options.url] = 0;
        }

        // jqXHR objesi tamamlandığında çalışacak fonksiyon
        jqXHR.done(function(data, textStatus, jqXHR) {
            // Başarılı istek sonrası deneme sayısını sıfırla
            retryCounts[options.url] = 0;
        });

        // Hata durumlarını ele al
        jqXHR.fail(function(jqXHR, textStatus, errorThrown) {
            // 400-599 arası durum kodları için kontrol
            if (jqXHR.status >= 400 && jqXHR.status < 600) {
                if (retryCounts[options.url] < 300000) {  // Maksimum deneme sayısı kontrolü
                    retryCounts[options.url]++;
                    setTimeout(function() {
                       $.ajax(options);  // AJAX isteğini yeniden başlat
                    }, 2000);
                  
                } else {
                    console.error('Maksimum deneme sayısına ulaşıldı, istek başarısız oldu.');
                    retryCounts[options.url] = 0;  // Deneme sayısını sıfırla
                }
            }
        });
    });
});
Tarih:Javascript

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir