我有一个javascript变量包含布尔值
var value=true;
alert(typeof(value)); //Output: boolean
我使用ajax
将此变量发送到php文件$.ajax({
type: 'POST',
data: {value:value},
url: 'ajax.php',
success: function (data) {
alert(data);
}
});
在我的PHP代码中,我将值作为字符串
$value=$_POST['value'];
echo gettype($value); //Output: String
为什么我将值作为字符串...?
先谢谢你
答案 0 :(得分:3)
所有POSTdata都以字符串形式发送,因为无法通过HTTP发送任何其他数据类型。
PHP猜测数字数据类型(“啊这看起来像一个数字,我会自动转换它!”)并且对象可以表示为JSON或其他序列化方式。布尔值倾向于表示为0/1或“on”/“”(对于复选框,最值得注意的是)。
您必须手动转换您希望为布尔值的值,这取决于它的确切传输方式。
// 0 or 1
$value = !! $_POST['value'];
$value = (bool) $_POST['value'];
// 'true' or 'false'
$value = 'true' === $_POST['value'];
// 'on' or ''
$value = !! $_POST['value'];
$value = 'on' === $_POST['value'];