在ajax中发送时无法获得正确的布尔值

时间:2013-08-20 18:58:03

标签: php javascript jquery ajax boolean

假设我们有以下ajax:

$.ajax({
    url:'myURL.php',
    data:{
        ac:'do',
        isDoable:false
    }
});

现在在读取调用数据的后端,isDoable是一个字符串,并尝试将其强制转换为布尔值:

$isDoable = (bool) $_REQUEST['isDoable'];

结果$isDoable始终为true,即使以false发送也是如此。 当我遇到这个问题时,我放弃了,只是将其视为字符串if($_REQUEST['isDoable'] == 'true')

但我无法克服它!为什么会出现这种意想不到的行为?有没有解决方法呢?

1 个答案:

答案 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