Estoy tratando de "transmisión" (de servidor a cliente) en Javascript por ajax (por XmlHttpRequest (= xhr). Estoy usando la función handleResponse modificada que se describe en Cross-browser implementation of "HTTP Streaming" (push) AJAX patternXmlHttpRequest.responseText durante la carga (readyState == 3) en Chrome
function handleResponse() {
if (http.readyState != 4 && http.readyState != 3)
return;
if (http.readyState == 3 && http.status != 200)
return;
if (http.readyState == 4 && http.status != 200) {
clearInterval(pollTimer);
inProgress = false;
}
// In konqueror http.responseText is sometimes null here...
if (http.responseText === null)
return;
while (prevDataLength != http.responseText.length) {
if (http.readyState == 4 && prevDataLength == http.responseText.length)
break;
prevDataLength = http.responseText.length;
var response = http.responseText.substring(nextLine);
var lines = response.split('\n');
nextLine = nextLine + response.lastIndexOf('\n') + 1;
if (response[response.length-1] != '\n')
lines.pop();
for (var i = 0; i < lines.length; i++) {
// ...
}
}
if (http.readyState == 4 && prevDataLength == http.responseText.length)
clearInterval(pollTimer);
inProgress = false;
}
con script php, lo que me vuelca los datos (sin ajax realmente vuelca los datos al navegador, mientras avanza a)
no tengo ningún problema en Firefox, pero Google Chrome e IE dame un responseText mientras está vacío xhr.readyState equivale a 3. Encontré ese problema descrito en Internet, pero no me dio una y solución.
¿Sabes cómo pasar por este problema de implementación en Chrome? (w3c dice, ese responseText no puede ser NULL en readyState == 3 - Chrome implementó esta regla, pero solo da una cadena vacía)
Y si no sabe, ¿conoce alguna solución funcional en algunos productos? (marcos opensource, bibliotecas, etc.)
Muchas gracias por sus ideas.
Editar: La solución consiste en la creación de marco flotante, llamar a la secuencia de comandos para IFRAME y datos ras aquí y datos de agarre mediante javascript de marco flotante. Pero esta no es una solución ajax. Realmente me gustaría ver la solución pura de Ajax.
¿Estás seguro de que estás configurando un "Tipo de contenido" de "texto/simple" o "aplicación/x-javascript" cuando comienzas tu respuesta del servidor? Aparentemente, los navegadores Webkit insisten en eso, o podrían hacerlo. – Pointy
Configuro el tipo de contenido como "application/x-www-form-urlencoded". Intenté - como dijiste - application/x-javascript, pero esto no funciona en absoluto. –