bir WordPress kullanmak.ajax işleme tepkiler devam ediyor: &; başarı":" vs ".bitti"?
JQuery ile çalışan ve birkaç hafta AJAX var ve iki farklı yolu 'arama yapıldıktan sonra script: success:
.done
. devam etmek gördüm
jQuery documentation Özet elde ederiz:
.() bitti: Açıklama: Ertelenmiş nesne çözüldüğünde işleyicileri çağrılacak Ekleyin.
başarı: (.() ajax seçeneği): eğer istek başarılı olursa çağrılacak Bir fonksiyon.
AJAX arama tamamlandıktan sonra bir şeyler yapmak hem de böylece çözüldü/. Bir veya diğer rasgele kullanabilir miyim? Ne biri diğerinin yerine kullanıldığında fark nedir?
CEVAP
success
başarı jQuery geri arama, ajax arama bir seçenek olarak tanımlanan geleneksel isim olmuştur. $.Deferreds
ve daha gelişmiş aramalar, done
uygulaması başarı geri aramaları için tercih edilen bir yöntem olduğundan, ancak deferred
herhangi çağrılabilir.
Örneğin, başarı:
$.ajax({
url: '/',
success: function(data) {}
});
Örneğin, bitti:
$.ajax({url: '/'}).done(function(data) {});
done
güzel tarafı dönüş $.ajax
değeri şimdi uygulamanızda başka bir yere bağlanabilir ertelenmiş bir sözdür. Hadi bu ajax birkaç farklı yerden arama yapmak istediğiniz söyleyin. Yerine geçen başarı fonksiyonu olarak bir seçenek işlevi yapan bu ajax çağrı, sadece dönüş fonksiyonu $.ajax
kendisi ve bağlamak size geri çağrıları ile done
, fail
, then
, ya da her neyse. always
istek başarılı veya başarısız çalışacak bir geri çağırma olduğunu unutmayın. done
sadece başarı tetiklenir.
Örneğin:
function xhr_get(url) {
return $.ajax({
url: url,
type: 'get',
dataType: 'json',
beforeSend: showLoadingImgFn
})
.always(function() {
// remove loading image maybe
})
.fail(function() {
// handle request failures
});
}
xhr_get('/index').done(function(data) {
// do stuff with index data
});
xhr_get('/id').done(function(data) {
// do stuff with id data
});
Sürdürülebilirlik açısından bu önemli bir fayda uygulamaya özel bir işlevi ajax mekanizması sarılmış olman. Eğer sen karar vermek zorundasın $.ajax
arama çalışması farklı gelecek, ya da kullandığınız farklı bir ajax yöntemi, ya da sen uzaklaş DV sadece değiştirmek için xhr_get
tanımı (emin olmak için bir dönüş söz ya da en azından bir done
yöntem, davanın örnek yukarıda). Uygulama boyunca tüm diğer başvurular aynı kalabilir.
Çok fazla var (çok daha iyi) şeyler yapabilirsiniz ile $.Deferred
, hangi birini kullanın pipe
tetikleyici bir başarısızlık bir hata bildirdi sunucu, bile $.ajax
istek başarılı olur kendisi. Örneğin:
function xhr_get(url) {
return $.ajax({
url: url,
type: 'get',
dataType: 'json'
})
.pipe(function(data) {
return data.responseCode != 200 ?
$.Deferred().reject( data ) :
data;
})
.fail(function(data) {
if ( data.responseCode )
console.log( data.responseCode );
});
}
xhr_get('/index').done(function(data) {
// will not run if json returned from ajax has responseCode other than 200
});
Daha fazla $.Deferred
buradan okuyabilirsiniz: http://api.jquery.com/category/deferred-object/
NOT: JQuery 1.8, pipe
aynı şekilde then
kullanarak lehine kalmıştır.
AJAX Başarı JSON sonuç üzerinde bir Wo...
Bir WordPress kullanmak başarı kontrol...
Neden bir WordPress kullanmak'ler...
&; Nasıl" backbone.js - Omurga bü...
bir WordPress kullanmak deferreds ve v...