2015-11-30 163 views
0

我(数据,状态,头,配置,状态文本)使用$ http.post()消息,使应用程序中的服务器调用。服务器代码位于.net中。对于特定用例,当进程失败时,服务器会返回一个业务异常和一条消息。

现在我可以看到越来越印在Chrome的在红色的控制台,用404代码一起。另外,我可以在Fiddler标题部分的顶部看到消息,如“HTTP/1.1 404消息到此处”。但我没有得到如何从响应头中提取该消息。

我想打印在控制台的功能如下,

$http.get(requestURL).success(
       function (data,status,headers,config,statusText) { 
        //deferred.resolve(data); 
        console.log("In service",data,status,headers,config,statusText); 
       }).error(
       function (data, status, headers, config, statusText) { 
        //deferred.reject(data); 
        console.log(data, status, headers, config, statusText); 
       }); 

的头,“匿名函数(名)”我需要帮助的东西提取出来的,(如果可能的话)。 statusText打印为未定义。我真的需要帮助,因为我需要向用户显示发送的消息。

如果它的事项:该消息是“reasonPhrase”属性被发送从服务器

回答

1

首先,在.success.error方法已过时。你应该使用.then

全部详情可在此页 - https://docs.angularjs.org/api/ng/service/$http

在你的榜样,你应该使用这样的事情:

$http.get(requestUrl).then(function (response) { 
    // success handling 
    console.log(response.headers()); 
}, function (response) { 
    // error handling 
    console.log(response.headers()); 
}); 

response.headers是一个函数。当你调用它(var headers = response.headers();)时,它会返回一个包含来自HTTP响应头部的对象。

按照上面链接,响应对象中的页面上的细节可以访问如下:

  • 数据 - {string|Object} - 响应与所述变换函数变换体。
  • status - {number} - 响应的HTTP状态码。
  • 标头 - {function([headerName])} - 标头吸气功能。
  • config - {Object} - 用于生成请求的配置对象。
  • statusText - {string} - 响应的HTTP状态文本。
1

我不知道你正在使用的angularjs的版本,但“传统” successerror回调已弃用了一段时间。

请考虑.then(...)新办法在这里看到: https://docs.angularjs.org/api/ng/service/$http

但是,为了回答你的问题: 在回调函数的参数headers代表一个getter,所以你需要调用它:headers()。您也可以在那里应用参数(特定标题)。

+0

补充一点'.then'老角工作见[为传统AngularJS V1.2更新](HTTP://计算器。com/a/33860223/5535245) – georgeawg

+1

感谢您的提示,不知道这一点。所以没有理由继续使用旧的语法@Saurabh - 你还会发现更多有关这种新方法的文档。 – FlorianTopf