Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么XMLHttpRequest响应类型因操作系统而异_Javascript_Ajax - Fatal编程技术网

Javascript 为什么XMLHttpRequest响应类型因操作系统而异

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

在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 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有不同的实现