我必须通过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); ?>;