Hola a todos tengo este código:XMLHttpRequest en Google-Chrome no está reportando eventos de progreso
function test()
{
req = new XMLHttpRequest();
req.upload.addEventListener("progress", updateProgress, false);
req.addEventListener("readystatechange", updateProgress, false);
req.addEventListener("error", uploadFailed, false);
req.addEventListener("abort", uploadCanceled, false);
var data = generateRandomData(currentPayloadId);
totalSize = data.length;
req.open("POST", "www.mydomain.com/upload.aspx");
start = (new Date()).getTime();
req.send(data);
}
function updateProgress(evt)
{
if (evt.lengthComputable) {
total = totalSize = evt.total;
loaded = evt.loaded;
}
else {
total = loaded = totalSize;
}
}
Además, mi servidor responde a la solicitud OPCIONES inicial para upload.aspx con 200 y el Access-Control-Permita -Origin: * y luego aparece la segunda solicitud POST
Todo parece funcionar y funciona muy bien en FireFox, pero en G Chrome no se llama al controlador updateProgress pero solo una vez y luego el lengthComputable es falso.
necesitaba el-Allow-Access-Control Origen: * porque se trata de una llamada de dominios cruzados, el padre de la escritura es un recurso en un servidor diferente, entonces el dominio upload.aspx
Alguien me puede dar alguna pistas, consejos, ayuda por favor? ¿Es este un problema conocido con G Chrome?
¡Gracias! Ova
¿Funciona cuando no es CORS? Si lo hace, genere un error en http://crbug.com/new – Kinlan
para las personas que buscan a su alrededor, el cuerpo eval de 'func updateProgress' puede omitirse por completo si el evento de progreso xhr ha establecido' evt.lengthComputable' en falso. No estoy muy seguro de lo que determina este comportamiento, pero parece suceder con pequeños intercambios de un solo fragmento en las solicitudes. Puede verificar fácilmente {en la misma función} finalización (solo) marcando las propiedades 'position' y' loaded' de los manejadores de eventos. (Por cierto, esta sintaxis no es (muy probablemente) compatible con las iteraciones más recientes de jquery.) –
Dado que está utilizando una URL absoluta, ¿no debería comenzar con: "http: //"? –