Javascript 从AJAX发送的数组中正确提取布尔值
在我的表单中,有几个字段带有字符串数据,还有一个字段带有布尔值。 预约(字符串) 客户(字符串) 管理_模式(布尔值) 在JS中,我收集表单数据,通过AJAX发送到php,如下所示:Javascript 从AJAX发送的数组中正确提取布尔值,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,在我的表单中,有几个字段带有字符串数据,还有一个字段带有布尔值。 预约(字符串) 客户(字符串) 管理_模式(布尔值) 在JS中,我收集表单数据,通过AJAX发送到php,如下所示: var formData = jQuery.parseJSON($('input[name="post_data"]').val()); $appointment = $post_data['appointment']; $customer = $post_data['cu
var formData = jQuery.parseJSON($('input[name="post_data"]').val());
$appointment = $post_data['appointment'];
$customer = $post_data['customer'];
$manage_mode = $post_data['manage_mode'];
如果manage mode为false,如果我在控制台中对此进行检查,这将通过AJAX发送所有字符串数据,我会看到--“manage_mode”:false
这是意料之中的
在php方面,我尝试使用以下方法提取数据:
var formData = jQuery.parseJSON($('input[name="post_data"]').val());
$appointment = $post_data['appointment'];
$customer = $post_data['customer'];
$manage_mode = $post_data['manage_mode'];
appointment和customer中的所有字符串数据都已正确处理,我能够按预期使用它。但是布尔函数不能正常工作。假被解读为真。我必须在php端以不同的方式处理它吗
我假设在PHP端,布尔值被视为一个字符串,因为不管怎样,它都被处理为true。如何解决此问题?请尝试:
警报(formData.manage_模式)代码>
formData应该是您可以相应地访问信息的对象
我假设在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
// ...
}
这项工作:
$manage_mode = filter_var ($post_data['manage_mode'], FILTER_VALIDATE_BOOLEAN);
在PHP上执行var\u dump
,检查传递的值,然后将其发布到您的问题中。