Pregunta

Estoy intentando conseguir esta función para trabajar, lo que hace una solicitud de parámetro url continuación, envía el responseText a callback que es una función.

Parece que sólo se pone a readyState 1 (gracias a los comandos de Firebug).

Aquí está:

function Request(url, callback){
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else{
    return false;
}
httpRequest.onreadystatechange = function(){
    console.log(httpRequest.readyState);
    if (httpRequest.readyState == 4) {
        callback(httpRequest.responseText);
    }
};
console.log(httpRequest, url);
httpRequest.open('GET', url, true);
httpRequest.send(null);
}
¿Fue útil?

Solución

Me workarounded este problema asignando proceso de carga en lugar de onreadystatechange:

function Request(url, callback){
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else{
        return false;
}

var readyStateChange = function(){
    console.log(httpRequest.readyState);

    if (httpRequest.readyState == 4) {
                callback(httpRequest.responseText);
    }
};


if (isFirefox && firefoxVersion > 3) {
    httpRequest.onload = readyStateChange;
} else {
    httpRequest.onreadystatechange = readyStateChange;
}

console.log(httpRequest, url);
httpRequest.open('GET', url, true);
httpRequest.send(null);
}

Otros consejos

Compruebe que la URL en cuestión no responde en realidad al visitar directamente en el navegador.

Prueba con un navegador diferente se obtiene el mismo resultado.

Utilice algún tipo de monitor de HTTP para ver el cliente a servidor de conversación (mi favorito es violinista )

Posiblemente la petición Ajax no devuelve datos (así, un error de lado del servidor de algún tipo). Pruebe a activar la opción 'Mostrar XMLHttpRequests' en la consola de Firebug, para comprobar esto.

También se enfrentó al mismo problema. Al leer la URL a continuación, yo tengo la mía resuelto.

http://bytes.com/topic/javascript / respuestas / 548442-ajax-readystate-1-pared

Básicamente, cuando se le asigno mi función que el detector de eventos para httpRequest.onreadystatechange, no puedo pasar una variable a la misma. Así entonces que tengo que incorporar la variable dentro de la cadena HTTP POST al servidor backend recuperarlo de la respuesta HTTP.

Funciona bien para FF 3. No hay necesidad de usar jQuery.

Yo tenía el mismo problema en Firefox, pero no en Chrome.

El problema fue mi respuesta había el tipo MIME a establecer  "Application / octet-stream".

Si lo cambia a "text / html" hizo que funcione en Firefox también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top