如何在php中获取从AJAX POST发送的数组的值?

时间:2013-10-25 11:27:32

标签: javascript php jquery ajax

我有一个带有ajax多次删除的探测器。我成功地设置了变量中选中的复选框的值。 我必须解决的问题是如何在php中获取发送数组的值。 这是ajax邮政编码

<script>
    $("#delete-btn").click(function(e){
        e.preventDefault();
        var id = new Array();
        $(".check:checked").each(function() {
            id.push($(this).attr('value'));

        }); 
        $.post("../ajax/multiDelete.php",{id:id},function(data){
            alert(data);    
        });
    });
</script>

现在,php页面

<?php

if(isset($_POST['id'])){
        $id = array($_POST['id']);

        foreach($id as $value){
                echo $value;    
        }
    }

?>

当数据被提醒时,我只得到“数组”; 我不知道JSON,所以如果有什么我可以没有它,那么你的帮助非常感谢!谢谢:D

5 个答案:

答案 0 :(得分:1)

因为id是一个数组,所以在你的代码中你再次将它包装在一个数组中。而不是那样做,这样做:

<?php
    if(isset($_POST['id'])){
            // Don't use array($_POST['id']) as id is already an array
            $id = $_POST['id'];
            foreach($id as $value){
                    echo $value; 
                    // Here you'll get the array values   
            }
        }

    ?>

答案 1 :(得分:0)

如果你想从php中恢复数组 - 用户json_encode()

echo json_encode(array($_POST['id']));

P.S。 JS函数alert()不能打印数组或对象。使用console.log(数据),您将在浏览器的开发者控制台中看到结果。

答案 2 :(得分:0)

不要在AJAX中传递数组变量。使用JSON.stringify(id)将id数组转换为JSON。

在PHP后端,使用

<?php $val = json_decode($_REQUEST['id']); 
       foreach($val as $ids){
           echo $ids;
        }

使用$ val数组继续进行php。

答案 3 :(得分:0)

这与你的问题无关,但我只是想告诉你一个更好的方法来获取id值,而不创建一个新的数组变量,然后使用jQuery {将项目推送到数组中{ {3}}方法: -

$("#delete-btn").click(function (e) {
    e.preventDefault();

    // Get all the values in the array 'id' variable
    var id = $(".check:checked").map(function () {
        return this.value || 0;
    }).get();

    $.post("../ajax/multiDelete.php", { id: id }, function (data) {
        alert(data);
    });
});

希望这有帮助!

答案 4 :(得分:0)

您必须通过 -

访问您选中的值
<?php

if(isset($_POST['id'])){
        $id = array($_POST['id']);

        foreach($id as $value){
               foreach($value as $value1){
                echo $value1;    
        }
        }
    }

?>

因为这是数组内的数组。