此代码中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) {
});
};
答案 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)
})
}