XMLHttpRequest的responseType属性接受多个值

我有一个$ http reponseType取决于URL查询参数的情况。 当output-target = html时,如果我根本没有提到responseType,我可以正确地得到html中的响应。 然而当output-target = xls时,我需要这样做,使其工作并将responseType设置为arraybuffer( 以在Excel中获得响应 )

var blob = new Blob([data],{type:“application / vnd.ms-excel”});

$http({ method: 'GET', url: "https://xyz/abc?output-target=" + $scope.outputTarget, headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Accept': '*/*'}, responseType: arraybuffer //for $scope.outputTarget=xls }) 

我需要一些能够接受各种响应types的东西。 如果这个选项不可用,那么这是怎么回事?

我也尝试将函数传递给responseType,但是也没有工作。

 responseType: (function () { if($scope.outputTarget === "table/excel;page-mode=flow") { var arraybuffer return arraybuffer; } else {return;} })() 

responseType文档

我们在这个项目中做的是在$ http上包装一个名为“ajax”的包装 ,在这个服务中,我们提供了额外的参数来获得/发布/调用/放置types的呼叫,并增强了Content-Type案件) 只是为了那个特殊的要求 。 该服务提供了当然的默认(最常见的ajax调用头)。

我保持responseType为arraybuffer,并在输出target = html时将缓冲区转换为string。

var decodedString = String.fromCharCode.apply(null,new Uint8Array(buf));