【问题标题】:Extracting JQuery POST parameters in PHP在 PHP 中提取 JQuery POST 参数
【发布时间】:2012-05-05 22:26:36
【问题描述】:

我正在尝试使用 JQuery 将一组复选框传递给 PHP。我正在使用来自Passing multiple checkbox items to PHP file using JSON and querying a DB 的代码我应该在那个问题下发布这个吗?

复选框对应于日历中每月的每一天。值是一个月中的整数天

<td><input name="check[]" value="4" type="checkbox">4</td>
<td><input checked="yes" name="check[]" value="7" type="checkbox">7</td>

复选框位于表单的表格中。

<form id="checkboxes">
<table id="calendarId" class="calendar"> 

我使用 Jquery 将复选框传递给 PHP:

   $("#calendarId").load($.post("calendar.php",{check: $("form#checkboxes").serialize()}));

Firebug 显示已选中的复选框列表位于 post 参数中。我检查生成此示例的两天是 7 天和 21 天,这在代码中是可识别的。

check   check%5B%5D=7&check%5B%5D=21
Source
check=check%255B%255D%3D7%26check%255B%255D%3D21

我的问题是我无法在 PHP 中提取这些值。

parse_str($_POST['check'], $checkboxes); 

返回一个空字符串,就像在 POST 数组上循环一样:

foreach($_POST as $key=>$val){
    $test .= $key . "; " . $value . "; ";
}

尝试循环 $_POST['check'] 会产生一个错误,我认为这意味着 $_POST['check'] 为空。

完整页面在http://www.genomics.liv.ac.uk/shereMuseum/calendar1.html

我还尝试在发布之前将复选框打包到数据结构“复选框”中:

        var checkboxes = new Array();
        $("input[name='check[]']:checked").each(function(){checkboxes.push($(this).val());});

        $.each($("input[name='check[]']:checked"),function() {
                checkboxes.push($(this).val());
        });

但随后 Firebug 将 POST 参数报告为:

undefined   undefined
undefined   undefined
Source
undefined=undefined&undefined=undefined

如果有任何建议,我将不胜感激。 哈利

【问题讨论】:

  • "尝试循环 $_POST['check'] 会产生一个错误,我认为这意味着 $_POST['check'] 为空。"尝试 var_dump($_POST);在你的 PHP 中看看你实际上得到了什么?

标签: php javascript jquery checkbox


【解决方案1】:

不确定你为什么要使用 $('#calendarId').load(...),但你有没有尝试过这样做

$.ajax({
    type: 'POST',
    url: 'calendar.php',
    data: $('#checkboxes').serialize(),
    success: function(response) {
        // handle the response here
    }
});

【讨论】:

  • 感谢汤姆找到了答案。数据可以从 $checkboxes 中提取为二维数组: parse_str($_POST['check'], $checkboxes); $firstElement = $checkboxes['check'][0];我还尝试使用与 GET 相同的方法从 jquery 收集 POST 的返回值。正确的 jQuery 命令是: $("#calendarId").load($.post("calendar.php",{check: $("form#checkboxes").serialize()}, function(data) { $( "#calendarId").html(数据); }));它将 calendarId 中的所有内容替换为返回值的内容;
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2014-11-22
    • 2021-08-12
    • 2013-05-06
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多