señales sexualmente saber rusia matrimonio infiel infidelidad hombre esposo dopaje comportamiento como casado cama actua javascript ajax firefox xmlhttprequest

javascript - sexualmente - Establecer XMLHttpRequest.responseType prohibido de repente?



señales de infidelidad en el matrimonio (2)

Este es el comportamiento correcto, tal como se define en la Especificación de XMLHttpRequest :

Cuando se establece: lanza una excepción "InvalidAccessError" si se establece el indicador síncrono y hay un documento XMLHttpRequest asociado.

La propiedad responseType no puede establecerse cuando XMLHttpRequest no es asincrónico, es decir, sincrónico. Establecer el tercer parámetro de open en false hace que la solicitud sea sincrónica .

He estado utilizando XMLHttpRequest sincrónico con responseType establecido en "arraybuffer" durante bastante tiempo para cargar un archivo binario y esperar hasta que se cargue. Hoy recibí este error: "Die Verwendung des responseType-Attributes von XMLHttpRequest wird im synchronen Modus im window-Kontekt nicht mehr unterstützt." que más o menos se traduce en "Uso de responseType for XMLHttpRequest en modo síncrono en window-context (?) ya no es compatible".

¿Alguien sabe cómo arreglar esto? Realmente no quiero usar una solicitud asincrónica para algo como esto.

var xhr = new XMLHttpRequest(); xhr.open(''GET'', url, false); xhr.responseType = ''arraybuffer'';

Funciona bien en cromo.


Solución

Para el lector casual, si aún necesita el comportamiento sincrónico, puede descargar su contenido como una cadena y luego convertirlo a datos de bytes

NO UN:
Esta solución supone la request.response original. La request.response es un texto ASCII .
Si esta suposición no se ajusta a su caso de uso específico, consulte jBinary .

Lo convierto en un ArrayBuffer .

var request = new XMLHttpRequest(); request.open(''GET'', url, false); request.send(null); var data; if (request.status === 200) { data = stringToArrayBuffer(request.response); } else { alert(''Something bad happen!/n('' + request.status + '') '' + request.statusText); } // ... function stringToArrayBuffer(str) { var buf = new ArrayBuffer(str.length); var bufView = new Uint8Array(buf); for (var i=0, strLen=str.length; i<strLen; i++) { bufView[i] = str.charCodeAt(i); } return buf; }

Más lectura

Referencias