从AJAX

时间:2015-12-30 21:16:35

标签: javascript php jquery ajax

在我的表单中,我有几个字符串数据字段和一个布尔值字段。     预约(字符串)     客户(字符串)     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。我该如何解决这个问题?

3 个答案:

答案 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);