XMLHttpRequest 的 responseType 属性 接受多个值
responseType property of the XMLHttpRequest to accept multiple values
我遇到 $http reponseType 依赖于 url 查询参数的情况。当 output-target=html 并且我根本不提及 responseType 时,我能够在 html 中正确获得响应。
但是,当 output-target=xls 时,我需要这样做才能使其工作
并将 responseType 设置为 arraybuffer (to get response in excel)
var blob = new Blob([数据], {类型: "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
})
我需要可以接受各种响应类型的东西。如果该选项不可用,解决方法是什么?
我也尝试过将函数传递给 responseType,但这也没有用。
responseType: (function () {
if($scope.outputTarget === "table/excel;page-mode=flow") {
var arraybuffer
return arraybuffer;
} else {return;}
})()
我们在该项目中所做的是在 $http 上创建一个名为 "ajax" 的 包装器,并且在该服务中我们为 get/post/call/put 类型的调用和 使用 Content-Type 增强 headers(在您的情况下)仅针对特定请求。该服务当然提供默认值(最常见的 ajax 调用 headers)。
当输出目标 = html.
时,我将 responseType 保持为 arraybuffer 并将缓冲区转换为字符串
var decodedString = String.fromCharCode.apply(null, new Uint8Array(buf));
我遇到 $http reponseType 依赖于 url 查询参数的情况。当 output-target=html 并且我根本不提及 responseType 时,我能够在 html 中正确获得响应。 但是,当 output-target=xls 时,我需要这样做才能使其工作 并将 responseType 设置为 arraybuffer (to get response in excel)
var blob = new Blob([数据], {类型: "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
})
我需要可以接受各种响应类型的东西。如果该选项不可用,解决方法是什么?
我也尝试过将函数传递给 responseType,但这也没有用。
responseType: (function () {
if($scope.outputTarget === "table/excel;page-mode=flow") {
var arraybuffer
return arraybuffer;
} else {return;}
})()
我们在该项目中所做的是在 $http 上创建一个名为 "ajax" 的 包装器,并且在该服务中我们为 get/post/call/put 类型的调用和 使用 Content-Type 增强 headers(在您的情况下)仅针对特定请求。该服务当然提供默认值(最常见的 ajax 调用 headers)。
当输出目标 = html.
时,我将 responseType 保持为 arraybuffer 并将缓冲区转换为字符串var decodedString = String.fromCharCode.apply(null, new Uint8Array(buf));