Tüm jQuery Ajax istekleri yapılır kadar beklemek?
Nasıl jQuery Ajax istekleri başka bir işlev içinde bir işlev yapılır kadar beklemek zorunda mıyım?
Kısacası, tüm Ajax istekleri için beklemek bu sırada ben yürütmeden önce yapılması gerekiyor. Ama nasıl?
CEVAP
Aslında, DV şimdi bir 'zaman' bu amaç için bir fonksiyon tanımlar.
http://api.jquery.com/jQuery.when/
Bağımsız değişken olarak Ertelenmiş nesneleri herhangi bir sayı kabul eder, ve onları çözmek zaman bir işlev yürütür.
Bu, eğer (örneğin) dört ajax istekleri başlatmak, işleri bittiğinde bir eylem gerçekleştirmek istiyorsanız, bu gibi bir şey yapabilirsin
$.when(ajax1(), ajax2(), ajax3(), ajax4()).done(function(a1, a2, a3, a4){
// the code here will be executed when all four ajax requests resolve.
// a1, a2, a3 and a4 are lists of length 3 containing the response text,
// status, and jqXHR object for each of the four ajax calls respectively.
});
function ajax1() {
// NOTE: This function must return the value
// from calling the $.ajax() method.
return $.ajax({
url: "someUrl",
dataType: "json",
data: yourJsonData,
...
});
}
Benim görüşüme göre, temiz ve net bir sözdizimi için yapar, ve sayfa geliştikçe istenmeyen yan etkileri olabilir ajaxStart ve ajaxStop, gibi herhangi bir global değişkenler ilgili önler.
Bunu bilmiyorsan önceden kaç ajax ihtiyacın beklemek için (örneğin kullanmak istediğiniz bir değişken sayıda bağımsız değişken), hala yapılabilir ama biraz yanıltıcıdır. Pass in an array of Deferreds to $.when() (ve belki de jQuery .when troubleshooting with variable number of arguments).
Eğer ajax komut başarısızlık modları üzerinde daha derin kontrol vs. ihtiyacın olursa nesne tarafından döndürülen kaydedebilirsiniz .() - Promise nesne orijinal ajax tüm sorgular kapsayan. bir jQuery var Arayabilirsiniz .() o zaman ya .() başarısız ayrıntılı başarı/başarısızlık işleyicileri eklemek için.
jQuery Ajax istekleri gönderiliyor olm...
İptal Ajax istekleri jQuery kullanarak...
Paralel Ajax istekleri jQuery kullanar...
Kullanmalıyım .() yapılır .() başarısı...
Nasıl FormData nesneleri göndermek içi...