SORU
29 Aralık 2010, ÇARŞAMBA


Nasıl iptal jQuery/AJAX isteği iptal etmek için?

Her 5 saniyede yapılacak bir AJAX isteği yaptım. Ama sorun eğer önceki istek bu isteği iptal etmek ve yeni bir istek yapmak zorundayım tamamlanmış ise AJAX isteği önce.

Bu sorunu çözmek için nasıl benim kod böyle bir şey?

$(document).ready(
    var fn = function(){
        $.ajax({
            url: 'ajax/progress.ftl',
            success: function(data) {
                //do something
            }
        });
    };

    var interval = setInterval(fn, 500);
);

CEVAP
29 Aralık 2010, ÇARŞAMBA


Jquery ajax yöntemi XMLHttpRequest bir nesne döndürür. Bu nesne isteği iptal etmek için kullanabilirsiniz.

XMLHttpRequest isteği iptal eder abort bir yöntem vardır.< / ^ br . Not: Eğer bu isteği zaten sunucuya gönderildikten sonra sunucu isteği iptal edersek bile isteği işleyecek ancak istemci yanıtı işlemek için beklemez.

Xhr nesne de isteği(GÖNDERİLMEMİŞ-0,-1, HEADERS_RECEİVED-2 AÇILDI,-YÜKLEME ve 3-4 BİTTİ) durumunu içeren readystate içerir. bir önceki isteği tamamlanmış olup olmadığını kontrol etmek için kullanabiliriz.

$(document).ready(
    var xhr;

    var fn = function(){
        if(xhr && xhr.readystate != 4){
            xhr.abort();
        }
        xhr = $.ajax({
            url: 'ajax/progress.ftl',
            success: function(data) {
                //do something
            }
        });
    };

    var interval = setInterval(fn, 500);
);

JQUERY 1.5 GÜNCELLEŞTİRİN

JQuery 1.5 beri $.ajax işlevi şimdi jqXHR bir nesne döndürür. Hala geriye uyumluluk için XMLHttpRequest eski özelliklerinin çoğunu sağlar, ancak uyumluluk keser readystate özelliği yararlanmak gibi görünüyor! Zaten kod üzerinde çalışmaya devam etmek için readyState kullanmak için değiştirilmesi gerekir:

$(document).ready(
    var xhr;

    var fn = function(){
        if(xhr && xhr.readyState != 4){
            xhr.abort();
        }
        xhr = $.ajax({
            url: 'ajax/progress.ftl',
            success: function(data) {
                //do something
            }
        });
    };

    var interval = setInterval(fn, 500);
);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • boburnham

    boburnham

    11 Temmuz 2006
  • spyib

    spyib

    9 Ocak 2007