Javascript 为什么XMLHttpRequest响应类型因操作系统而异
在Windows(v7-Chrome v43)上,当将PDF二进制文件返回到XMLHTTPRequest时,响应类型是字符串,而在Mac Chrome上,响应是对象(arraybuffer),这有什么原因吗 ajax调用来自同一页面,指向同一远程URL 显示代码的简化示例,其中params.url定义pdf资源Javascript 为什么XMLHttpRequest响应类型因操作系统而异,javascript,ajax,Javascript,Ajax,在Windows(v7-Chrome v43)上,当将PDF二进制文件返回到XMLHTTPRequest时,响应类型是字符串,而在Mac Chrome上,响应是对象(arraybuffer),这有什么原因吗 ajax调用来自同一页面,指向同一远程URL 显示代码的简化示例,其中params.url定义pdf资源 var xhr = new XMLHttpRequest(); xhr.onload = function(evt) { console.log(typeof
var xhr = new XMLHttpRequest();
xhr.onload = function(evt) {
console.log(typeof xhr.response)
};
try {
xhr.open('GET', params.url, true);
xhr.responseType = 'arraybuffer';
xhr.send();
} catch (e) {
params.error( e);
}
您能给我们看一下这两个请求的HTTP头吗?您的xhr的
.responseType
是什么(可能只是给我们看一下您的代码)?响应的'typeof'的console.log产生'string'和'object'*后者是正确的数组如果请求头/响应是相同的,contenttype application/pdf,当前长度正确..我没有要求xhr.response的类型
(从您的描述中可以明显看出),而是要求xhr.responseType
。请显示让我们重现您的问题的最小代码。在xhr open()之后,我将响应类型设置为arraybuffer。。responseType='arraybuffer'我创建了一个变通方法,根据结果的类型做出不同的反应。但是,我仍然不想在不知道为什么在Windows中对响应的解释不同的情况下离开它。也许XMLHttpRequest有不同的实现