【问题标题】:$http call, error handling in angular js not working$http 调用,angular js 中的错误处理不起作用
【发布时间】:2016-12-06 06:22:09
【问题描述】:
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,我可以回到这里的方法吗?

【问题讨论】:

  • 你没有传递正确的数据,可能是你错过了id或者你传递了一些错误的数据。所以它显示 400 bad request
  • 我从服务器端发送的错误请求,但客户端接收为未定义
  • 你的应用中有拦截器吗?
  • 我认为您没有将错误作为错误发送。相反,您只是发送 JSON 响应。问题不在于 AngularJS,它是需要修复的服务器端代码。
  • @Raghu Venmarathoor 是的,它要去拦截器。

标签: angularjs spring-mvc angular-fullstack


【解决方案1】:

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

【讨论】:

  • 状态码:400,是400,需要改吗?
  • 什么时候会调用错误,哪个状态码范围?
  • 在浏览器的控制台中,你看到@@@1了吗?如果将console.log('@@@3') 添加到catch 函数中,您应该会看到@@@1、@@@2 或@@@3。
  • @@@1 undefined,我可以看到这个。它应该进入错误部分,其值为何为@@@1 undefined,这是我的问题。
  • 我的回答是关于为什么它没有进入错误部分的问题。
猜你喜欢
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 2012-11-16
  • 2016-07-12
相关资源
最近更新 更多