Javascript 处理回复
Javascript handling responses
我有一个 angularjs 函数,它调用服务器端 url 并获得响应。该服务器端有时会返回 xml 响应。有时返回一个博客作为回应。无法预测。如果我在客户端将响应类型设置为 "blob",它会正确显示图像。但我无法处理非 blob 响应,因为 xml 响应也显示为 blob。在网络上搜索了很多关于将 blob 转换为 xml(包含 xml 响应的响应)。但是找不到答案:(
如果我删除响应类型:"blob",可以处理非 blob 响应但无法处理 blob 响应。
有没有办法用一种方法处理两种类型的响应?
这是我的 angularjs 获取响应的代码
$http({
url: apiConstants.BASE_URL + 'login',
method: "POST",
responseType: "blob",
data: {
"Req": req
},
headers: {
'X-Username': aUser,
'X-Password': aPass,
"Content-Type": "application/xml"
},
dataType: "xml"
}).success(function(data, status) {
console.log(data);
}
如果您能够在响应中正确设置 Content-Type
header 并从您的服务器提供 blob 和 xml 响应, 然后你可以使用 headers()
in success 回调来相应地处理它们。
$http.post(url, postData)
.then(function(response){
// success callback
var responseType = response.headers('Content-Type');
var actualType = responseType.split(';');
if(actualType[0] === 'application/xml'){
// handle XML files here
}else{
// handle blob files here
}
}, function(error){
// error callback
});
我通过以下更改解决了这个问题
$http({
url: apiConstants.BASE_URL + 'login',
method: "POST",
responseType: "blob",
data: {
"Req": req
},
headers: {
'X-Username': aUser,
'X-Password': aPass,
"Content-Type": "application/xml"
},
dataType: "xml"
}).success(function(data, status, headers, config) {
var responseType = headers('Content-Type');
if(responseType === 'application/xml;charset=utf-8'){
alert("xml");
}else{
alert("blob");
}
}
我有一个 angularjs 函数,它调用服务器端 url 并获得响应。该服务器端有时会返回 xml 响应。有时返回一个博客作为回应。无法预测。如果我在客户端将响应类型设置为 "blob",它会正确显示图像。但我无法处理非 blob 响应,因为 xml 响应也显示为 blob。在网络上搜索了很多关于将 blob 转换为 xml(包含 xml 响应的响应)。但是找不到答案:(
如果我删除响应类型:"blob",可以处理非 blob 响应但无法处理 blob 响应。
有没有办法用一种方法处理两种类型的响应?
这是我的 angularjs 获取响应的代码
$http({
url: apiConstants.BASE_URL + 'login',
method: "POST",
responseType: "blob",
data: {
"Req": req
},
headers: {
'X-Username': aUser,
'X-Password': aPass,
"Content-Type": "application/xml"
},
dataType: "xml"
}).success(function(data, status) {
console.log(data);
}
如果您能够在响应中正确设置 Content-Type
header 并从您的服务器提供 blob 和 xml 响应, 然后你可以使用 headers()
in success 回调来相应地处理它们。
$http.post(url, postData)
.then(function(response){
// success callback
var responseType = response.headers('Content-Type');
var actualType = responseType.split(';');
if(actualType[0] === 'application/xml'){
// handle XML files here
}else{
// handle blob files here
}
}, function(error){
// error callback
});
我通过以下更改解决了这个问题
$http({
url: apiConstants.BASE_URL + 'login',
method: "POST",
responseType: "blob",
data: {
"Req": req
},
headers: {
'X-Username': aUser,
'X-Password': aPass,
"Content-Type": "application/xml"
},
dataType: "xml"
}).success(function(data, status, headers, config) {
var responseType = headers('Content-Type');
if(responseType === 'application/xml;charset=utf-8'){
alert("xml");
}else{
alert("blob");
}
}