在发送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
为什么我得到的值为字符串..?
预先感谢您
答
所有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'];
为什么你需要它是一个布尔值? PHP自动执行类型转换。在PHP中,您可以尝试像“if($ value == true){...}”一样检查它 – Zeusarm 2014-09-19 10:35:05