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
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);
);
Nasıl AngularJS $http isteği iptal etm...
Nasıl jQuery Ajax çağrısından sonra bi...
Nasıl, asenkron yerine senkron AJAX is...
Nasıl js veya jQuery ile ajax isteği i...
Nasıl bir yerel gıt taahhüt iptal etme...