$ Http.get(),如何处理来自WebAPI的{404}响应

时间:2016-06-01 09:24:36

标签: javascript angularjs ajax http web-applications

在我的Web应用程序中,我对远程HTTP WebAPI服务执行GET命令

$http.get(url).then(function(data) { do_something(); });

当WebAPI返回一些数据时,一切正常,但是当WebAPI返回404错误(没有数据显示)时,该函数似乎没有触发。 如何为它设置回调?

3 个答案:

答案 0 :(得分:4)

$http.get(url).then(function(data) {
  do_something();
}, function(err) {
  // your error function
  if (err.status == 404) {
    do_something_else();
  }
});

答案 1 :(得分:2)

我认为对于404回复,最好的方法是显示正确的未找到的页面。在angularjs中,您可以使用$ injector服务拦截响应。因此,您可以创建一个查找404响应并显示404页面的服务。

    angular.module('mymodule')

    .service('APIInterceptor', function( $injector) {
      return {
       'request': function(config){
           // request logic goes here.
       },
       'responseError' : function(response){
          if (response.status === 404) {
            $injector.get('$state').go('error_500');
          }
        return response;
       }
     };
    });

答案 2 :(得分:1)

$http返回状态代码作为第二个参数。

$http.get(url)
  .success(function(data, status) {
      alert(status);
  })
  .error(function(data, status) {
      alert('Error with status code: ' + status); 
  });

status - {number} - 响应的HTTP状态代码。

但是,如果状态是错误状态,例如404,则将调用错误块