2011-08-01 6 views
7

que tienen un fragmento de Javascript que necesito de depuración:Problema con los valores de XMLHttpRequest.DONE?

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

Pasando a través de Chrome y Firefox, he encontrado que el primer "si" está fallando. Puedo ver que "this.readyState" se establece en "1", lo que a juzgar por la especificación W3C debe significar "ABIERTO". Al pasar el cursor sobre el segmento ".DONE" en Firebug, se muestra como indefinido en lugar de "4".

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

¿Hay un problema en Firefox y Chrome con lo cual no se admiten estos valores?

¡Gracias de antemano!

+0

A veces funciona, a veces no lo hacen, en el mismo Firefox, a veces httpRequest.DONE funciona pero no XMLHttpRequest.DONE, raro –

Respuesta

8

Debería comprobar readyState contra uno de los valores numéricos, 4 en su caso.

+0

Gran, eso es lo arreglaron. ¡Muchas gracias! – MeanwhileInHell

+5

Una pequeña nota: 'XMLHttpRequest.DONE' * debe * mantener el valor numérico' 4', pero no está implementado en IE8 ni en las siguientes. – Blaise

5

Algunos navegadores no conocen la propiedad XMLHttpRequest.Done, por lo que debe verificarla de la siguiente manera antes de la primera 'si'.

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

Por favor explique (en su respuesta) cómo responde esto a la pregunta del OP. Como es, esto es solo un fragmento de código sin mucho contexto. –

Cuestiones relacionadas