2011-03-28 16 views
5

Bir ajax isteğinin okuma kalitesini jquery ile nasıl öğrenebilirim?Jquery Ajax Readstates'i nasıl edinilir

http.open("POST", url, true); 

http.onreadystatechange = function() { 
    if(http.readyState == 4 && http.status == 200) { 
     // do something 
    } 
} 

Yani ben kolayca yukarıdaki kodu kullanarak 1'den 4'e Readystate değeri izlemek ve bir yükleme simgesi göstermek gibi gerekli işlemleri gerçekleştirebilir: Genel olarak , jquery kullanmadan, böyle bir ajax isteği gönderir readystate 1 ise.

Ancak jquery ajax çağrısı aracılığıyla, readystate değerlerini nasıl izleyebilirim?

böyle jquery ile bir ajax arama yapıyorum:

$.post('ajax/test.html', function(data) { 
    $('.result').html(data); 
}); 

cevap

11

ajaxStop$.ajax belgelerine bakın kullanabilir. Farklı geri aramalar geçmek olanağına sahip (belki değil evert "hazır devlet" için ama bir gösterge yeter): kullanılabilir

beforeSend(jqXHR, settings)Fonksiyon
Önceden isteği geri arama işlevi jqXHR (jQuery 1.4.x, XMLHTTPRequest) nesnesini gönderilmeden önce değiştirmek için. Özel üstbilgileri vb. Ayarlamak için bunu kullanın. jqXHR ve settings haritaları bağımsız değişken olarak iletilir. Bu bir Ajax Etkinliğidir. beforeSend işlevinde false işlevinin döndürülmesi isteği iptal edecektir. JQuery 1.5'den itibaren, istek türüne bakılmaksızın beforeSend seçeneği çağrılır. isteği başarılı olursa

success(data, textStatus, jqXHR)Fonksiyon, Dizi
bir işlev çağrılacak. Fonksiyon üç argümandan geçiyor:parametresine göre biçimlendirilen sunucudan döndürülen data; durumu açıklayan bir dize; ve jqXHR (jQuery 1.4.x, XMLHttpRequest) nesnesinde. JQuery 1.5'den itibaren, başarı ayarı bir dizi işlevi kabul edebilir. Her işlev sırayla çağrılacak. Bu bir Ajax Event. isteği başarısız olursa
bir fonksiyon

error(jqXHR, textStatus, errorThrown)İşlev çağrılacak. Işlev üç bağımsız değişken alır: jqXHR (jQuery 1.4.x, XMLHttpRequest) nesnesinde, oluşan hata türünü ve isteğe bağlı bir istisna nesnesi olan bir dizeyi açıklayan bir dize. İkinci bağımsız değişken için olası değerler (null dışında) "timeout", "error", "abort" ve "parsererror"'dur. Bu bir Ajax Event. JQuery 1'den itibaren.5, error ayarı bir dizi işlevi kabul edebilir. Her işlev sırayla çağrılacak. Not: Bu işleyici, etki alanları arası komut dosyası ve JSONP istekleri için çağrılmamıştır.

complete(jqXHR, textStatus)Fonksiyon, Dizi
bir fonksiyon talep yüzeyler (success ve error geri aramalar sonra yürütülür) çağrılacak. işlev, iki bağımsız değişken iletilir: jqXHR (jQuery 1.4.x, XMLHTTPRequest) nesne ve isteğe durumunu kategorize bir dizisi ("success", "notmodified", "error", "timeout", "abort" veya "parsererror"). JQuery 1.5'den itibaren complete ayarı bir dizi işlevi kabul edebilir. Her işlev sırayla çağrılacak. Bu bir Ajax Event.

Yani iyi bir fikir beforeSend geçirilen geri aramasında göstergesi göstermek ve complete bunu gizlemek olacaktır.


Örnek: (sizin herhangi bir veri göndermediği gibi POST kullanmamın nedeni

$.ajax({ 
    url: 'ajax/test.html', 
    type: 'POST', 
    beforeSend: function() { 
     // show indicator 
    }, 
    complete: function() { 
     // hide indicator 
    }, 
    success: function(data) { 
     $('.result').html(data); 
    } 
}); 

anlamıyorum rağmen:

Yani olarak kodunuzu yeniden yazmak zorunda kalacak en azından örnek kodunuzda).

+0

Cevabınız için teşekkürler, sorularımda bahsedilen örnek jquery POST çağrısında nasıl kullanılacağına dair bir örnek gönderir misiniz? –

+1

@dskanth: Bir örnek ekledim. –

+0

Teşekkürler, aslında posta yoluyla bazı parametreler göndermek zorundayım, ama bu örnekte onları dahil etmedim. –

1

bunun için kullanılması

$.ajax({ 
url:, 
success:function(){ 

}//This is ready state 4 
}); 

perform necessary action like showing a loading icon when readystate is 1.

Eğer ajaxStart ve

+3

Bu yalnızca readystate 4'ü, diğer eyaletler hakkında ne söyler? –