2011-08-01 17 views
7

Mam fragment JavaScript że muszę debug:Problem z wartościami XMLHttpRequest.DONE?

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

Krocząc przez Chrome i Firefox, I okazało się, że pierwszy „jeśli” jest wadliwa. Widzę, że "this.readyState" jest ustawione na "1", co według specyfikacji W3C powinno oznaczać "OPENED". Najechanie na segment ".DONE" w Firebug pokazuje go jako niezdefiniowany zamiast "4".

http://www.w3.org/TR/XMLHttpRequest/#states

Czy jest jakiś problem w Firefoksie i Chrome przy czym wartości te nie są obsługiwane?

Z góry dziękuję!

+0

czasami działa, czasami nie robić w tym samym firefox, czasami httpRequest.DONE działa, ale nie XMLHttpRequest.DONE, dziwne –

Odpowiedz

8

Powinieneś sprawdzić readyState przed jedną z wartości liczbowych, 4 w twoim przypadku.

+0

Wielki, który jest klasyfikowane go. Wielkie dzięki! – MeanwhileInHell

+5

Mała uwaga: 'XMLHttpRequest.DONE' * powinien * posiadać wartość liczbową' 4', ale nie jest zaimplementowana w IE8 i poniżej. – Blaise

5

Niektóre przeglądarki nie znają właściwości XMLHttpRequest.Done, więc powinieneś sprawdzić ją w następujący sposób przed pierwszym "if".

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

Proszę wyjaśnić (w odpowiedzi), w jaki sposób odpowiada to na pytanie OP. Ponieważ jest to tylko fragment kodu bez dużego kontekstu. –

Powiązane problemy