2016-07-13 4 views
0

enter image description hereこのコードでは、if/elseは機能しません。間違いはありますか? data.successtrue/falseを含む。もし私が(data.success === true)ならば、このようなコードを書くと、ブロックが動作していて、ブロックが動作していなければ、その逆です。/elseがanglejsで動作しない場合

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

は条件ならば、 'undefined'と' null'なのでも同じで確認することができbecuase、もし条件の前に警告(ty​​peof演算data.success) ''、値data.successのデータ型を印刷しようあなたの 'data.success'が' undefined'または 'null'の場合には、他の部分がトリガーします –

+0

@Scary彼はすでに' angularjs'に言ったでしょう。おそらく彼はおそらくstackoverflowと 'java 'タグを付けたコーディングの初心者です。 –

+0

'if(data.success)'は 'data.success'が未定義でもなくnullでもない限りtrueを返します。代わりに 'if(data.success == true)'を使用してください。 –

答えて

1
あなたはdata.successを変更する必要があり

以下のように応答してdata.messageをチェックする必要がありますオブジェクトを返します

レスポンスあなたが配列形式でそれを取らなければならない理由で、それは応答で配列を返すブール値ではないので、.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) { 
     }); 
}; 
0

これは、data.successにブール値が含まれていないためです。 だから、前にあなたのブロック

console.log(typeof data.success); 

data.success

の種類を出力して、それを解決しない場合、それはブール値で見しようとした場合、他。

+0

アラート(typeof data.success)を実行すると、オブジェクト –

0

.success()の代わりに.then()を使用してください。あなたはdata.success [0]およびデータへ

$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

関連する問題