我使用 AngularJS 作为框架,并连接到 Web 服务来获取一些 JSON 数据。我有以下代码:
$login.onlineLogin($scope.credentials).
success(function (data, status, headers, config) {
if (data !== null ) {
console.log('Successful Login!');
console.log('Returned data: ' + data);
} else {
console.log('Failed to Login...');
}
}).
error(function (data, status, headers, config) {
console.log('HTTP Error...');
});
现在,当 HTTP 调用返回时,状态仍可能为 200:OK,但它返回的对象可能为 null,例如在用户提供了错误的用户凭据的情况下。所以我期望在这种情况下发生的是,如果对象不为空,它将打印出“成功登录!”然后打印出该对象。
但是,现在发生的情况是我使用了一些伪造的凭据,因此 Web 服务返回 null。但仍然是“登录成功!”被打印,然后在打印“返回的数据:null”之后......这没有意义。如果数据为空,它根本不应该出现在该代码块中?
最佳答案
而不是
if (data !== null ) {
.....
}
用这个
if(data) {
....
}
这将检查空字符串 (""
)、null
、undefined
、false
和数字0
和 NaN
。
关于Javascript null 检查未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32196972/