将数组从jquery发送到PHP并返回

时间:2014-08-24 13:17:42

标签: php jquery arrays json

我有一个用户可以看到的项目选项(类别)列表。通过选择类别,下面的div应该更新为与所述类别匹配的项目列表。

尽管使用了以下答案,几乎是逐字逐句,Send array with Ajax to PHP script,我仍然无法检索任何结果,但也没有出现任何错误。

jquery:

// filter for projects
var $checkboxes = $("input:checkbox");

function getProjectFilterOptions(){
    var opts = [];

    $checkboxes.each(function(){
        if(this.checked){
            opts.push(this.name);
        }
    });

    return opts;
}

$checkboxes.on("change", function(){
    var opts = getProjectFilterOptions();

    //alert(opts);

    var categories = JSON.stringify(opts);

    $.ajax({
        url: "/web/plugins/projcat.php",
        type: "POST",
        dataType: "json",
        data: {data : categories},
        cache: false,

        success: function(data) {
            $('#projects').html(data);
            //alert(data);
        }
    });

});

php(仍在测试中,所以没有填写):

<?php

if(isset($_POST['categories'])) {

    //echo "testing";
    $data = json_decode(stripslashes($_POST['categories']));
    print_r($data);
}
?>

错误在哪里?

2 个答案:

答案 0 :(得分:1)

试试这个:

JS

...    
// dataType: "json",   // remove that; you're not sending  back JSON string
data: {categories : categories},
cache: false,
...

PHP

<?php

if($_SERVER['REQUEST_METHOD']=='POST' && isset($_POST['categories'])) {

    //echo "testing";
    $data = json_decode(stripslashes($_POST['categories']));

    // .. process the $data

    print_r($data);
    return;
}
?>

答案 1 :(得分:0)

您想要的数组位于$_POST['data']而不是$_POST['projcats']。将data: {data : categories},更改为data: { projcats: categories },以使用$_POST['projcats']