假设我们有以下ajax:
$.ajax({
url:'myURL.php',
data:{
ac:'do',
isDoable:false
}
});
现在在读取调用数据的后端,isDoable
是一个字符串,并尝试将其强制转换为布尔值:
$isDoable = (bool) $_REQUEST['isDoable'];
结果$isDoable
始终为true
,即使以false
发送也是如此。
当我遇到这个问题时,我放弃了,只是将其视为字符串if($_REQUEST['isDoable'] == 'true')
但我无法克服它!为什么会出现这种意想不到的行为?有没有解决方法呢?
答案 0 :(得分:0)
由于您没有通过POST发送JSON数据(可以使用json_decode
正确处理),因此您的字符串"true"
或"false"
将始终是布尔值true
,因为PHP会假设,作为一个非空字符串,你的var应该被转换为true
布尔值。
因此,您应该在您的情况下使用字符串比较。
例如:
$value = (bool)"test"; // whatever value, not empty string
var_dump($value);
是布尔值true
$value = (bool)"";
var_dump($value);
是布尔值false