通过jquery发送的关联php数组返回[Object object]

时间:2016-02-09 20:05:04

标签: javascript php jquery arrays ajax

我必须通过ajax / jQuery将php多维数组传递给另一个php文件。 我已使用编码数组 我期望数组中的每个项目本身都是一个数组。而是返回[Object object]。 如何使用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']等。

3 个答案:

答案 0 :(得分:0)

您将json编码的数据放入arr_data javascript变量中 - 但是您似乎并未将其发送到其他php文件。

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

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

答案 1 :(得分:0)

是的,正如Aric所说,名字阵列一直是这样的:

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

答案 2 :(得分:0)

这里有几个错误:

  • 使用方括号[]
  • 传递给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
        )

)