首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS:如何获取$http的错误状态

AngularJS:如何获取$http的错误状态
EN

Stack Overflow用户
提问于 2015-12-30 11:30:27
回答 3查看 78关注 0票数 0

下面是我的场景:

我的控制器就像:

代码语言:javascript
复制
var userData = $http(
{
     method: "post",
     url: "http://some-domain.com/t-app/mobile-data/login.php",
     data    : $scope.loginForm, //forms user object
     headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});
userData.success(function (userdataobject)
{
    $rootScope.status_id = userdataobject["status_id"];
});

我知道这只有在互联网连接可用的情况下才能起作用。我的问题是,在这个场景中,我如何知道像"404“这样的错误状态,或者如果internet连接不可用?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-30 11:34:49

status字段(来自文档):

代码语言:javascript
复制
// Simple GET request example:
$http({
  method: 'GET',
  url: '/someUrl'
}).then(
    function successCallback(response) {
        // this callback will be called asynchronously
        // when the response is available
    },
    function errorCallback(response) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.
        if (response.status === 404)
        {
            //your code here
        }
});

在你的情况下是:

代码语言:javascript
复制
$http(
{
   method: "post",
   url: "http://some-domain.com/t-app/mobile-data/login.php",
   data    : $scope.loginForm, //forms user object
   headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
})
.then(
  function(response) {
    $rootScope.status_id = userdataobject.data["status_id"];
  },
  function(response) {
    if (response.status === 404) {
        //your code here
    }
  } 
);
票数 1
EN

Stack Overflow用户

发布于 2015-12-30 11:40:57

关于你的例子:

代码语言:javascript
复制
var userData = $http({
     method: "post",
     url: "http://some-domain.com/t-app/mobile-data/login.php",
     data    : $scope.loginForm, //forms user object
     headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});

userData.success(function (userdataobject) {
    $rootScope.status_id = userdataobject["status_id"];
}).catch(function(errorResponse, status) {
    console.error(errorResponse); //for debugging
    if (errorResponse.status == 404) {
      //Handle 404 error 
    }
    //or if (status == 404) {}
});

errorResponse将包含以下字段:

  • 数据-{string}--响应体使用转换函数进行转换。
  • 响应的状态- {number} - HTTP状态代码。
  • 标头-{函数(HeaderName)}-标头getter函数。
  • config - { object } -用于生成请求的配置对象。
  • statusText - {string} - HTTP文本的响应。
票数 1
EN

Stack Overflow用户

发布于 2015-12-30 11:42:45

您的代码可能如下所示:

代码语言:javascript
复制
$http(
{
     method: "post",
     url: "http://some-domain.com/t-app/mobile-data/login.php",
     data    : $scope.loginForm, //forms user object
     headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}).then(function successCallback(response) {
    $rootScope.status_id = response["status_id"];
}, function errorCallback(response) {
    console.error(response.status);
    console.error(response.statusText);
});

这样,您就可以控制成功和错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34528669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档