2011-08-01 36 views
7

Ben debug gereken bir Javascript snippet var:XMLHttpRequest.DONE değerleri ile ilgili sorun mu var?

var httpRequest = new XMLHttpRequest(); 
httpRequest.onreadystatechange = function() { 
    if (this.readyState === XMLHttpRequest.DONE) { 
     if (this.status === 200) { 
      success = true; 
     } 
    } 
}; 

Chrome ve Firefox üzerinde adım adım, ilk "if" başarısız olduğunu bulduk. "This.readyState" in "1" olarak ayarlandığını görebiliyorum, W3C spec ile değerlendirildiğinde "OPENED" anlamına gelmelidir. Firebug'daki ".DONE" segmentinin üzerine gelindiğinde, onu "4" yerine tanımsız olarak gösterir.

Firefox ve Chrome'da bu değerlerin desteklenmediği bir sorun var mı?

Şimdiden teşekkürler!

+0

bazen bazen httpRequest.DONE garip –

cevap

8

Durumunuzdaki 4 sayısal değerden birine karşı readyState kontrol etmelisiniz.

+0

, ancak büyük XMLHttpRequest.DONE çalışır bazen aynı ateş, yapma, çalışır, bu kadar sıralanmış oluyor. Çok teşekkürler! – MeanwhileInHell

+5

Küçük bir not: 'XMLHttpRequest.DONE' * * sayısal değerini' 4' tutmalı, ancak IE8 ve altında uygulanmadı. – Blaise

5

Bazı tarayıcı XMLHttpRequest.Done özelliğini bilmiyor, bu nedenle ilk 'if' öğesinden önce aşağıdaki gibi kontrol etmelisiniz.

var DONE = (typeof XMLHttpRequest.Done !== 'undefined') ? XMLHttpRequest.Done : 4; 
+1

Lütfen (cevabınızda), OP'nin sorusunu nasıl yanıtladığını açıklayınız. Bu, sadece bağlamı olmayan bir kod pasajı. –

İlgili konular