我有一个看起来像这样的JSON编码数组(它来自一个2d PHP字符串数组):
[
[
"a1",
"a2",
"a3",
"a4"
],
[
"b1",
"b2",
"b3",
"b4"
],
[
"c1",
"c2",
"c3",
"c4"
]
]
上验证
现在我想通过Ajax将此数组发送到另一个页面并将其转换回2d PHP数组。 在创建一个JSON数组后,我执行以下操作(其中myJsonArray是我将数组放入Javascript数组后给它的名称。:
$.ajax({
type: "GET",
url: "somewhere.php",
data: {jsonArray : myJsonArray},
dataType: "json",
success: function(msg){
alert( msg);
}
});
}
然后在somewhere.php我做:
$json_array = $_GET['jsonArray'];
$myArray = json_decode($json_array,true);
但当我回应结果时,我得到了
[Object object]
我不确定如何重新创建PHP数组。
编辑: 如何制作myJsonArray:
<?php
$array = json_encode($original_array);
echo "var myJsonArray = ". $array . ";\n";
?>
我还想指出,出于测试目的,我在警报框中打印myJsonArray成功,它确实按预期打印出阵列。
答案 0 :(得分:2)
“[Object object]”是将对象评估为字符串的javascript。
当您将可选的“true”传递给json_decode时,您告诉它它是一个关联数组。但是你真的想要一个数组阵列。
我确信如果您使用JSON.stringify打印到您的日志,您将获得正确的数据,除了外括号将是“{..}”。
答案 1 :(得分:-1)
我已经尝试执行下面的代码片段来解码上面指定的json内容,它对我来说很好。
<?php
$a=array(array("a1","a2","a3","a4"),array("b1","b2","b3","b4"),array("c1","c2","c3","c4"));
$json_content=json_encode($a);
$json_array=json_decode($json_content,true);
echo '<pre>';
print_r($json_array);
?>