处理成功/错误响应http请求angularjs

时间:2017-02-16 16:56:10

标签: javascript angularjs

我的app.js中有一个名为UserService的工厂,它为我做了所有用户HTTP请求。

当我尝试创建用户时,我有以下方法。

function create(user) {
  return $http.post(envService.read('apiUrl') + '/auth/register', user).then(handleSuccess, handleError('Error creating user'));
}

然后在我的控制器中我做了类似的事情:

function register() {
  vm.dataLoading = true;
  UserService.create(vm.user).then(function successCallback(response) {
      $location.path('/');
      Flash.create('success', response.message);
  }, function errorCallback(error) {
      Flash.create('danger', error);
      vm.dataLoading = false;
  });
}

处理成功和错误的函数

  // private functions

  function handleSuccess(res) {
      return res.data;
  }

  function handleError(error) {
      return function () {
          return { success: false, message: error };
      };
  }

但是,即使响应代码是403或导致错误的任何其他内容,它也总会进入成功回调。我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

在Angular JS中,当您为' $ http'提供回调函数时,您可以选择不将参数设置为

等函数
$http.get('/someUrl', config).then(successCallback, errorCallback);

或者你在其中提供回调函数,如

$http({
method: 'GET',
url: '/someUrl'
    }).then(
       function successCallback(response) {}, 
       function errorCallback(response) {}
       );

另一方面,如果您确实想在回叫中调用自己的功能,可以选择这种方式,

      $http(
      {
        method: this.url.method,
        url: serviceURL,
      }
      ).
      success(function(data, status, headers, config) {
          successCallback(data, status, headers, config);
      }).
      error(function(data, status, headers, config) {
         errorCallback(data, status, headers, config);
      });  

所以,基本上你的回调函数需要一个'响应'包含

的参数
  1. 数据 - {string | Object} - 使用转换函数转换的响应正文。
  2. 状态 - {number} - 响应的HTTP状态代码。
  3. 标题 - {function([headerName])} - 标头获取功能。
  4. config - {Object} - 用于生成请求的配置对象。
  5. statusText - {string} - 响应的HTTP状态文本。
  6. 在你的代码中,我会改变        handleError('Error creating user')带有一些正确的回调,并在回调中接收该对象。

    要详细了解,请阅读this