繁体   English   中英

AngularJS $ http和如何获得错误响应

[英]AngularJS $http and how to get error response

我看到以下示例用于调用服务器端资源:

UserSession.prototype.$save = function() {
    return $http.post('/users/sign_in', {
      "user" : { 
        "email" : this.email,
        "password" : this.password,
        "remember_me" : this.remember_me ? 1 : 0 
      }   
    }); 
  };  

我的问题是,如果调用失败,是否可以在此代码中看到实际的错误响应? 上面如何写呢?

您错过了回调

UserSession.prototype.$save = function() {
    return $http.post('/users/sign_in', {
      "user" : { 
        "email" : this.email,
        "password" : this.password,
        "remember_me" : this.remember_me ? 1 : 0 
      }   
    })
    .success(function (data, status, headers, config) {
       // success logic here
    })
    .error(function (data, status, headers, config) {
       // error logic here
    });
}; 

您需要使用.error()回调参考

   UserSession.prototype.$save = function() {
        return $http.post('/users/sign_in', {
          "user" : { 
            "email" : this.email,
            "password" : this.password,
            "remember_me" : this.remember_me ? 1 : 0 
          }   
        }).error(function(data, status, headers, config) {
            // called asynchronously if an error occurs
            // or server returns response with an error status.
        });
  };  

您可以像其他答案所建议的那样在该函数中定义.success.error回调,但是我觉得您更有可能希望调用.$save的应用程序代码确定成功或失败时要完成的工作。

因此,您将按原样保留.$save函数,并且在应用程序中的任何地方调用myUserSession.$save() ,您都可以执行以下操作:

myUserSession.$save()
   .success(function(data, httpStatus, header, config) {
       ...
   })
   .error(function(data, httpStatus, header, config) {
       ...
   });

这样做只会使代码更具可重用性。 当然,如果您知道关于保存的事实,那么您到处都希望有完全相同的行为,那么就按照其他答案所建议的去做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM