jQuery kullanarak, henüz yanıtını almadığım bir Ajax isteğini** nasıl iptal edebilirim/iptal edebilirim?
jQuery Ajax yöntemlerinin çoğu bir XMLHttpRequest (veya eşdeğeri) nesnesi döndürür, bu nedenle sadece abort()
kullanabilirsiniz.
Belgelere bakın:
var xhr = $.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
//kill the request
xhr.abort()
GÜNCELLEME: jQuery 1.5'ten itibaren döndürülen nesne, jqXHR adı verilen yerel XMLHttpRequest nesnesi için bir sarmalayıcıdır. Bu nesne, tüm yerel özellikleri ve yöntemleri ortaya çıkarıyor gibi görünmektedir, bu nedenle yukarıdaki örnek hala çalışmaktadır. Bkz The jqXHR Object (jQuery API belgeleri).
GÜNCELLEME 2:
jQuery 3'ten itibaren, ajax yöntemi artık ekstra yöntemlere sahip (abort gibi) bir promise döndürmektedir, bu nedenle yukarıdaki kod hala çalışmaktadır, ancak döndürülen nesne artık bir xhr
değildir. 3.0 bloguna buradan bakabilirsiniz]6.
GÜNCELLEME 3: xhr.abort()` hala jQuery 3.x üzerinde çalışıyor. *Güncelleme 2'nin doğru olduğunu varsaymayın. Daha fazla bilgi jQuery Github deposunda.
İsteği geri çağıramazsınız, ancak yanıtın yok sayılacağı bir zaman aşımı değeri ayarlayabilirsiniz. Jquery AJAX seçenekleri için bu sayfa'e bakın. Zaman aşımı süresi aşılırsa hata geri aramanızın çağrılacağına inanıyorum. Her AJAX isteğinde zaten varsayılan bir zaman aşımı vardır.
Ayrıca istek nesnesi üzerinde abort() yöntemini de kullanabilirsiniz, ancak bu yöntem istemcinin olayı dinlemeyi durdurmasına neden olsa da, sunucunun olayı işlemesini muhtemelen durdurmayacaktır.
Bu bir eşzamansız istektir, yani bir kez gönderildiğinde artık oradadır.
Sunucunuzun AJAX isteği nedeniyle çok pahalı bir işlem başlatması durumunda, yapabileceğiniz en iyi şey sunucunuzu iptal isteklerini dinleyecek şekilde açmak ve sunucuya her ne yapıyorsa durdurmasını bildiren ayrı bir AJAX isteği göndermektir.
Aksi takdirde, AJAX yanıtını yok sayın.