Biri bana yardım edebilir mi?
Ben arasındaki farkı anlamak mümkün değilim success
ve .done()
bir $.ajax
.
Mümkünse lütfen örnekler verin.
Biri bana yardım edebilir mi?
Ben arasındaki farkı anlamak mümkün değilim success
ve .done()
bir $.ajax
.
Mümkünse lütfen örnekler verin.
Yanıtlar:
Kısacası, başarı geri arama işlevini ajax işlevinden ayırarak, daha sonra orijinal kodu (gözlemci kalıbı) değiştirmeden kendi işleyicilerinizi ekleyebilirsiniz.
Lütfen buradan daha ayrıntılı bilgi bulun: https://stackoverflow.com/a/14754681/1049184
success:
Bir parametre olarak kullanılan ve .success()
bir yöntem olarak kullanılan arasında bir fark vardır jqXHR
. İkincisi kullanımdan kaldırılıyor, ancak ilki OP'nin sorduğu şey.
success
yalnızca AJAX çağrısı başarılı olursa tetiklenir, yani sonuçta bir HTTP 200 durumu döndürür. error
Başarısız olursa ve complete
istek tamamlandığında, başarıya bakılmaksızın tetiklenir.
İlgili jQuery 1.8 içinde jqXHR
bir nesne ile (geri $.ajax
) success
ile değiştirildi done
, error
ile fail
ve complete
ile always
.
Ancak yine de AJAX isteğini eski sözdizimi ile başlatabilmeniz gerekir. Yani bunlar benzer şeyler yapar:
// set success action before making the request
$.ajax({
url: '...',
success: function(){
alert('AJAX successful');
}
});
// set success action just after starting the request
var jqxhr = $.ajax( "..." )
.done(function() { alert("success"); });
Bu değişiklik, jQuery 1.5'in ertelenmiş nesnesiyle uyumluluk içindir . Ertelenmiş (ve artık Promise
Chrome ve FX'te tam yerel tarayıcı desteğine sahip olan), eşzamansız eylemler zincirlemenize olanak tanır:
$.ajax("parent").
done(function(p) { return $.ajax("child/" + p.id); }).
done(someOtherDeferredFunction).
done(function(c) { alert("success: " + c.name); });
Bu işlev zincirinin bakımı, birlikte aldığınız iç içe geçmiş bir geri arama piramidinden daha kolaydır success
.
Ancak, bunun yerine kullanılan sözdizimi done
lehine artık kullanımdan kaldırıldığını lütfen unutmayın :Promise
then
$.ajax("parent").
then(function(p) { return $.ajax("child/" + p.id); }).
then(someOtherDeferredFunction).
then(function(c) { alert("success: " + c.name); }).
catch(function(err) { alert("error: " + err.message); });
Bu değer benimseyerek çünkü async
ve await
sözler geliştirilmiş sözdizimi (ve hata işleme) uzatmak:
try {
var p = await $.ajax("parent");
var x = await $.ajax("child/" + p.id);
var c = await someOtherDeferredFunction(x);
alert("success: " + c.name);
}
catch(err) {
alert("error: " + err.message);
}
success
jQuery 1.8'de yerini done
. Aynı şekilde çalışırlar, ancak done
jQuery'nin geri kalanıyla daha tutarlıdırlar.
.done
olduğu konusundaki erken (ve şimdi çıkmaz) bıçağıydı Promise
ve şimdi oldukça kapsamlı bir dil desteğine sahip. Yeni projelerde const response = await fetch(...)
bunun yerine kullanırdım.
.success()
yalnızca web sunucunuz 200 OK HTTP başlığıyla yanıt verirse çağrılır - temelde her şey yolunda olduğunda.
Done () öğesine eklenen geri aramalar, ertelenmiş çözüm çözüldüğünde tetiklenecektir. Fail () 'e eklenen geri aramalar, ertelenen reddedildiğinde tetiklenecektir.
promise.done(doneCallback).fail(failCallback)
.done() has only one callback and it is the success callback
success
istek başarılı olduğunda çağrılan ve $.ajax
aramanın bir parçası olan geri aramadır. done
aslında jqXHR
tarafından döndürülen nesnenin bir parçasıdır $.ajax()
ve success
jQuery 1.8'de yerini alır .