从AJAX发送的数组中正确提取布尔值



在我的表单中,我有几个带有字符串数据的字段和一个带有布尔值的字段。约会(字符串)客户(字符串)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);

最新更新