在我的表单中,我有几个带有字符串数据的字段和一个带有布尔值的字段。约会(字符串)客户(字符串)manage_mode(布尔值)
在JS中,我正在收集我的表单数据,并通过AJAX发送到php,其中包括:
var formData = jQuery.parseJSON($('input[name="post_data"]').val());
如果管理模式为false,如果我在控制台中检查它,它会通过AJAX发送所有字符串数据,我会看到--"manage_mode":false
预期的
在php端,我尝试用以下方法提取数据:
$appointment = $post_data['appointment'];
$customer = $post_data['customer'];
$manage_mode = $post_data['manage_mode'];
约会和客户中的所有字符串数据都得到了正确处理,我能够按预期使用它。但是布尔值不能正常工作。假即为真。我必须在php端以不同的方式处理它吗?
我假设在PHP方面,布尔值被视为字符串,因为不管怎样,它都被处理为true。我该怎么解决这个问题?
我假设在PHP方面,布尔值被视为字符串,因为不管怎样,它都被处理为true。
当然是这样
非常简单的解决方案是将true
|false
字符串转换为TRUE
|FALSE
布尔值:
$manage_mode = $post_data['manage_mode'] == 'true' ? TRUE : FALSE;
如果您不能完全确定JSON源中的内容,那么您可能会更安全,比如:
switch ($post_data['manage_mode']) {
case 'true': $manage_mode = TRUE; break;
case 'false': $manage_mode = FALSE; break;
default:
// depends on what better matches your needs outside of this:
// . simply FALSE
// . FALSE and throw an error
// ...
}
尝试:alert(formData.manage_mode);
formData应该是一个对象,您可以相应地访问信息
这是有效的:
$manage_mode = filter_var ($post_data['manage_mode'], FILTER_VALIDATE_BOOLEAN);