通过jquery发送的关联php数组返回[对象对象]


Associative php array sent via jquery returns [Object object]

我必须通过ajax/jQuery将一个php多维数组传递给另一个php文件。我已经使用我预计数组中的每个项目本身都是一个数组。相反,它返回 [对象对象]。如何使用 php 访问数据?

这是我的代码:

在第一个 PHP 文件中:

<script type="text/javascript">
var arr_data = <?php echo json_encode($itemsData); ?>;
$("#confirmButton").click(function(){
    $.post("send_test.php", {"my_array_data[]":my_array_data}, function( data ) {
        alert(data);
    });
});
</script>

另一个 PHP 文件:

<?php
$my_array_data = $_POST['my_array_data'];
?>

如果我尝试检索第一行($my_array_data[0]),我会得到[Object object]我只想访问$my_array_data[0]['category']等。

这里有几个错误:

  • 您传递给 AJAX 的数据使用括号的键不正确[]
  • 您没有通过 ajax 传递正确的对象,因为从未定义my_array_data

像这样重做代码:

.PHP

$itemsData = array(
    array(
        "test" => 30,
        "test2" => 10,
    ),
    array(
        "test" => 90,
        "test2" => 50,
    )
);

.JS

var arr_data = <?php echo json_encode($itemsData); ?>;
$("#confirmButton").click(function () {
    $.post("send_test.php", {my_array_data: arr_data}, function (data) {
        console.log(data);
    });
});

然后在send_test.php

$data = $_POST['my_array_data'];
print_r($data);

结果:

Array
(
    [0] => stdClass Object
        (
            [test] => 30
            [test2] => 10
        )
    [1] => stdClass Object
        (
            [test] => 90
            [test2] => 50
        )
)

你把json编码的数据放到arr_data javascript变量中 - 但是你似乎没有把它发送到另一个php文件。

另一个 php 文件中,尝试对您在 POST 请求中接收的数据使用 json_decode

$my_array_data = json_decode($_POST['my_array_data']);

是的,正如 Aric 所说,名称数组始终如下所示:

var my_arr_data = <?php echo json_encode($itemsData); ?>;