$ http调用,角度js中的错误处理不起作用

时间:2016-12-06 06:22:10

标签: angularjs spring-mvc angular-fullstack

function registrationSave(data){
            return $http({
                method: 'POST',
                url: 'registration/save',
                data: data
            }).then(function(response){
                 console.log("@@@1 "+JSON.stringify(response));
            },function(error){
                  console.log("@@@2"+JSON.stringify(error));
                  return error.data;
            }).catch(function (data) {
                // Handle error here
            });
    };

如果出现错误,这是服务的服务器响应

//服务器响应

{
    "code": 400,
    "message": "Failled with registration Id 1,341.",
    "result": "False"
}

如果出现400错误,客户端代码响应未定义?它永远不会在客户端代码中出现错误部分。

为什么会这样?

这是使用的拦截器

   /**
         * To handle error response.
         */
        function responseError(error) {
              if (error.status === 401 || error.status === 403) {
                  if(error.data != null && error.data.code === 401 ){ //access denied error
                      toaster.error( 'Access denied', 'User does not have privilege');
                  }
              }

        }

如果是400,我可以返回这里的方法吗?

1 个答案:

答案 0 :(得分:1)

如果HTTP状态代码在200和299之间,则调用$http的成功函数,否则调用错误函数。从服务器返回的HTTP状态代码似乎是200,而消息正文中的code字段是400.在成功函数中没有return所以你看到的是未定义的。如果您在浏览器控制台中观察@@@ 1,则可以验证是否发生了这种情况。在浏览器的开发人员工具网络选项卡中,您还可以查看HTTP状态代码并验证它是否介于200和299之间。