如果/ else不在angularjs中工作

时间:2016-07-13 04:45:25

标签: javascript angularjs

enter image description here此代码中if/else无效。我犯了什么错吗? data.success包含true/false。如果我这样编码(data.success === true)那么else块正在工作,如果块不工作,反之亦然。

$scope.verifyMobile = function () {
   var otp = {
      "otp": $scope.mobile.otp
   };
   $http({
      method: 'POST',
      url: 'verify_mobile',
      data: otp,
      headers: {
         'Content-Type': 'application/x-www-form-urlencoded'
      }
   }).success(function (data, status, headers, config) {
      if (data.success) {
          $scope.verified = true;
          $scope.sms_sent = false;
      } else {
          alert(data.message);
      }
   }).error(function (data, status, headers, config) {
   });
};

3 个答案:

答案 0 :(得分:1)

你应该将data.success和data.message更改为data.success [0]和data.message [0],因为这不是布尔值,你返回数组作为响应,这就是为什么你必须把它放在一个数组中格式。请尝试以下代码。

$scope.verifyMobile = function () {
        var otp = {
            "otp": $scope.mobile.otp
        };
        $http({
            method: 'POST',
            url: 'verify_mobile',
            data: otp,
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        }).success(function (data, status, headers, config) {
            if (data.success[0]) {
                $scope.verified = true;
                $scope.sms_sent = false;
            } else {
                alert(data.message[0]);
            }
        }).error(function (data, status, headers, config) {
        });
};

答案 1 :(得分:0)

这是因为您的data.success不包含布尔值。 所以在你的if-else块之前尝试打印data.success类型

console.log(typeof data.success);

如果没有,那就看它是布尔值然后解决它。

答案 2 :(得分:0)

而不是.success()使用.then()

响应将返回一个对象,您应该检查响应如下

$scope.httpRequest = function() {
  $http({
    method: 'GET',
    url: 'http://jsonplaceholder.typicode.com/posts/1',
  }).then(function(success) {
    if (success.data.userId === 1) {
      $scope.name = 'Jason Statham'
    } else {
      $scope.name = 'Cristiano Ronaldo'
    }
  }, function(error) {
    console.log(error)
  })
}

DEMO