我进行ajax调用以获取数据。如果存在,例如结果设置我想运行另一个函数。
JS
success: function(result){ console.debug(result); console.log(result);
if(result !== "false" || result !== ""){
console.log('passed');
}
在控制台我有“通过”。
结果为空,但仍然是if语句的计算结果为true。为什么呢?
这是我发送的结果。它是空的......
PHP
$row = $stmt->fetch();
echo $row['objekt_nr'];
答案 0 :(得分:2)
如果结果为"false"
,那么它不是空字符串,并且OR的右侧是真的。
如果结果为""
,那么它不是"false"
,并且OR的左侧是真的。
如果是其他任何内容,那么OR语句的双方都是真的。
无论哪种方式,OR语句都是真的。
你想要一个AND而不是一个OR。
答案 1 :(得分:1)
条件result !== "false" || result !== ""
将始终评估为真,因为结果最多只能是两个值中的一个。为了使条件为假,result
必须同时为""
和"false"
!
例如:
如果result === "false"
则result !== ""
必须为真(结果为"false"
,而不是""
)
如果result === ""
则result !== "false"
必须为真(结果为""
,而不是"false"
)
如果结果既不是""
也不是"false"
,那么双方都是真的,评估为真。
你究竟想要检查什么?
if(result !== "false" && result !== "")
如果结果 "false"
或""
if(result === "false" || result === "")
如果结果为 "false"
或""
答案 2 :(得分:1)
你的||需要成为&&。
陈述if (result !== "false" || result !== "")
永远是真的!结果字符串同时不能同时"false"
和""
...这是语句可以解析为false的唯一方式。