簡體   English   中英

AngularJS:如何獲取$ http的錯誤狀態

[英]AngularJS: how to get the error status of $http

這是我的情況:

我的控制器就像:

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”,或者如果互聯網連接不可用?

status字段(來自docs ):

// 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
        }
});

您的情況是:

$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
    }
  } 
);

關於您的示例:

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將具有以下字段:

  • data – {string | Object} –使用轉換函數轉換的響應主體。
  • status – {number} –響應的HTTP狀態代碼。
  • 標頭– {function([headerName])} –標頭獲取函數。
  • config – {Object} –用於生成請求的配置對象。
  • statusText – {string} –響應的HTTP狀態文本。

您的代碼可能是這樣的:

$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);
});

通過這種方式,您可以控制成功和錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM