在我的表单中,我有几个字符串数据字段和一个布尔值字段。 预约(字符串) 客户(字符串) manage_mode(boolean)
在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'];
约会和客户中的所有字符串数据都已正确处理,我可以按预期使用它。但是布尔值不能正常运行。 False读为true。我是否必须在php端以不同方式处理它?</ p>
我假设在PHP端,布尔值被视为一个字符串,因为无论如何它都被处理为true。我该如何解决这个问题?
答案 0 :(得分:2)
我假设在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
// ...
}
答案 1 :(得分:0)
尝试:
alert(formData.manage_mode);
formData应该是一个可以相应地访问信息的对象
答案 2 :(得分:0)
这有效:
$manage_mode = filter_var ($post_data['manage_mode'], FILTER_VALIDATE_BOOLEAN);