解决IE9中jQuery.ajax无法处理responseType为arraybuffer的二进制数据流
导读:本期聚焦于小团团创作的《解决IE9中jQuery.ajax无法处理responseType为arraybuffer的二进制数据流》,敬请观看详情。前端项目里偶尔会遇到一个棘手的问题:页面运行在IE9上,通过jQuery.ajax请求二进制数据,明明设置了responseType为arraybuffer,回调里拿到的却仍然是字符串,导致文件损坏、音频无法播放。根本原因在于IE9的XMLHttpRequest对象不支持标准responseType属性,也没有response对象,只能通过responseBody拿到VBArray格式的原始字节。jQuery内部的success处理逻辑读不到预期类型,自然就当作文本返回了。要解决这个问题,要么直接使用原生XHR并手动把VBArray转成ArrayBuffer,要么通过jQuery的ajaxTransport机制自定义传输层,让现有调用方式保持不变。这篇文章会深入分析两种方案的实现细节、代码示例以及需要注意的兼容性陷阱,帮助你在老式IE环境中稳定接收二进制数据流。
栏目:jQuery 时间:10-25 jQuery.ajax

