在将javaScript变量发送到php变量时键入转换

时间:2014-09-19 10:30:34

标签: javascript php jquery ajax

我有一个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

为什么我将值作为字符串...?

先谢谢你

1 个答案:

答案 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'];