通过jQuery post将复选框数据传递给db时的奇怪性

时间:2011-12-29 18:21:59

标签: php jquery post

我遇到了一个奇怪的问题。我需要异步将数据发布到第三方系统。除了表单末尾的两个复选框外,一切正常。不幸的是,我无法访问系统的数据库,因此只有在该系统的管理区域中显示任何结果时才能确定成功/失败。

表单和jQuery是用PHP构造的。以下相关领域:

Have a Representative Call Me: <input  id="00N60000002Rtib" name="00N60000002Rtib" type="checkbox" value="1" /><br>
Send Marketing Material and Updated News: <input  id="00N60000002Rtig" name="00N60000002Rtig" type="checkbox" value="1" /><br>

数据结构(PHP):

foreach ($values as $key => $val) {
    if ($key == '00N60000002Rtib' || $key == '00N60000002Rtig') {
        $data .= "$key : $val, ";
    } else {
        $data .= "$key : \"$val\", ";
    }
}

$data = substr($data, 0, -2); // remove trailing comma and space

jQuery构造:

<script type="text/javascript">
    $(window).load(function() {
        $.post('http://somesite.com', { <?php echo $data; ?> });
    });
</script>

查看HTML源代码确认我的帖子$ data已正确构建。

真的奇怪的是,具有相同字段的纯HTML表单正确发布。我很难过。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题并且发现即使复选框是空的并且似乎没有包含在帖子请求中,它们仍被我的服务器标记为“已检查”(因此被插入数据库)。确保值不为空,以避免带有复选框的ajax提交中的任何奇怪。

这将取消设置空值的发布键:

foreach($_POST as $k=>$v) { if(empty($v)) unset($_POST[$k]); }