在发送JavaScript变量类型转换到PHP变量

问题描述:

我有一个JavaScript变量包含在发送JavaScript变量类型转换到PHP变量

var value=true; 
alert(typeof(value)); //Output: boolean 

我使用AJAX

$.ajax({ 
    type: 'POST', 
    data: {value:value}, 
    url: 'ajax.php', 
    success: function (data) { 
     alert(data); 
    } 
}); 

在我的PHP代码发送此变量的一个PHP文件的布尔值i得到的值作为字符串

$value=$_POST['value']; 
echo gettype($value); //Output: String 

为什么我得到的值为字符串..?

预先感谢您

+0

为什么你需要它是一个布尔值? PHP自动执行类型转换。在PHP中,您可以尝试像“if($ value == true){...}”一样检查它 – Zeusarm 2014-09-19 10:35:05

所有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'];