Javascript null检查没有按预期工作
Javascript null checking not working as expected
我使用AngularJS作为我的框架,也连接到一个webservice来获取一些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,但是它返回的对象可能是空的,例如在用户提供错误的用户凭据的情况下。所以我期望在这种情况下发生的是,如果对象不为空,它会打印出"成功登录!"’,然后打印出对象。
然而,现在发生的事情是我使用了一些假凭据,所以webservice返回null。但仍然是"成功登录!"'被打印出来,然后在它打印'Returned data: null'之后…这说不通啊。如果数据是空的,它甚至不应该在那个代码块中结束?
代替
if (data !== null ) {
.....
}
使用这个
if(data) {
....
}
这将检查空字符串(""
), null
, undefined
, false
和数字0
和NaN
。
如果你不确定你的变量使用的类型,
console.log(typeof variableName)
在您的情况下,您的问题可以使用
来解决if (data != 'null') {
...
==和===有区别。JavaScript有严格(===)和类型转换(==)相等比较。
当两个字符串具有相同的字符序列、相同的长度和在相应位置的相同字符时,它们是严格相等的。当两个数字在数值上相等(具有相同的数值)时,它们是严格相等的。NaN不等于任何东西,包括NaN。正零和负零彼此相等。如果两个布尔操作数都为真或都为假,则两个布尔操作数严格相等。如果两个对象引用同一个对象,则它们严格相等。Null和Undefined类型是==(但不是===)。[即Null==Undefined(但不是Null===Undefined)]
if (data != null ) {
console.log('Successful Login!');
console.log('Returned data: ' + data);
} else {
console.log('Failed to Login...');
}
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- Jquery ajax方法请求体为null,但poster工作正常
- onmousemove=null不会'我不在IE工作
- 当JS在Chrome控制台上正常工作时,Selenium JavaScript执行器返回null
- getElementById不工作返回NULL
- Null-Coalescing 运算符 (??) 在 Spider 中是如何工作的
- javascript 的 document.getElementById 返回 null,但从控制台工作
- 在JavaScript中检查null可以正常工作,但零除外
- window.open在内联脚本中返回null并失败,但可以在控制台中工作
- HTML POST->重定向工作,XMLHTTPrequest->重定向不起作用(无法从null发出任何请求
- getElementById在代码中返回null,但在控制台中工作
- 谷歌地图v3 directionsRenderer.setMap(null)不工作,以清除以前的方向
- Java doPost()在使用getParameter()时工作,但doGet()总是抛出null..为什么
- Javascript null检查没有按预期工作
- __proto__似乎不能在null赋值后工作- bug或特性
- 简单的基于iframe的AJAX脚本:第一次调用产生'null'元素,后续调用'We’我们的工作
- document.getElementById在其他人正常工作时返回null
- 为什么当number的值在AngularJs中非法输入时,绑定到null不能工作?
- ng-show不能使用下划线jjs 's _.isNull,但与val === null一起工作