Ionic $ http.post捕获错误

时间:2017-03-09 14:19:04

标签: angularjs ionic-framework

我有一个提交功能,它将一些数据发布到服务器中,然后服务器返回一个响应。功能正常。不过,我想在后期处理过程中发现一些错误。例如,如果没有与服务器的连接,则向用户返回错误以通知他正在进行的操作。而不是只是按下按钮,什么都不做。我知道我可以创建一个函数以某种方式ping服务器并检查它是否还活着,但这不是我需要的。我想在错误函数中有一个语句,并捕获大部分可能的错误并向用户输出解释。

$scope.submit = function() {
  var link = 'http://app.example.com/api.php';

  $http.post(link, {
    username: $scope.data.username,
    password: $scope.data.password
   }).then(function(res) {
    $scope.response = res.data;
    $localStorage.token = res.data;
    console.log($localStorage.token);
   })
   .catch(function(error) {
    console.error(error);
   })
   .finally(function() {
    //do something
   });
 };

1 个答案:

答案 0 :(得分:0)

解决方案:

  $http.post(link, {
    username: md5.createHash($scope.data.username),
    password: md5.createHash($scope.data.password),
   }).then(function(res) {
     //Success Scenario
   })
   .catch(function(error) {
    if (error.statusText == ""){
      $scope.response = "Unexpected error. Make sure WiFi is on."
      //When the device is not connected on the internet the response error is -1 (or any number) and the statusText is empty. So we caching that one as-well.
    }
    else {
      $scope.response = "Error - "+error.status + " ("+error.statusText+")";
      //else we display the error along with the status, for example error 500 Internal Server error.
    }
   })
   .finally(function() {
    //This function will always be called at the end. Take advantage of it      :)
   });

我希望它对某人有用。