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");
            }
    }