Javascript Ajax返回数组在PHP中显示[object object],[object object]

Javascript Ajax返回数组在PHP中显示[object object],[object object],javascript,php,jquery,arrays,ajax,Javascript,Php,Jquery,Arrays,Ajax,在Jquery中,我创建了两个数组,一个嵌入在另一个数组中,如下所示 arrayOne = [{name:'a',value:1}, {name:'b',value:2}] var arrayTwo = [{name:'foo',value:'blah'},{name:'arrayOne',value:arrayOne}]; 然后,我将通过Ajax实现这一点,并通过PHP在另一端提取变量。打印结果($arrayTwo)如下所示 Array([foo] => blah [arrayOne]

在Jquery中,我创建了两个数组,一个嵌入在另一个数组中,如下所示

arrayOne = [{name:'a',value:1}, {name:'b',value:2}]
var arrayTwo = [{name:'foo',value:'blah'},{name:'arrayOne',value:arrayOne}];
然后,我将通过Ajax实现这一点,并通过PHP在另一端提取变量。打印结果($arrayTwo)如下所示

Array([foo] => blah [arrayOne] => [object Object],[object Object])
我无法提取arrayOne的内容,这很遗憾,因为我真的需要它们!谁能告诉我在Jquery中我做错了什么,或者我需要在PHP中做些什么才能让嵌入式数组变得可访问

非常感谢,一如既往


编辑以添加我的Ajax代码

$.ajax({
  type: "POST",
  url:'actions.php',
  data:arrayTwo,
  datatype:'json',
  cache: false,
  success: function(data){

}

})问题在于jQuery的
$.ajax
(或者更确切地说是
$.param
)方法以一种特殊的方式处理对象数组。jQuery将使用
name
作为参数名,将
value
的字符串表示形式作为值:

> $.param([{name: 'foo', value: 42}, {name: 'bar', value: 21}])
"foo=42&bar=21"
但是
arrayOne
的字符串表示形式是您在服务器上看到的无用内容:

> [{name:'a',value:1}, {name:'b',value:2}].toString()
"[object Object],[object Object]"
在传递数组/对象时,实际上指出了注意事项:

如果传递的对象在数组中,则它必须是
.serializeArray()

注意:由于某些框架解析序列化数组的能力有限,开发人员在传递包含嵌套在另一个数组中的对象或数组的
obj
参数时应谨慎

注意:由于参数字符串没有公认的规范,因此不可能使用这种方法对复杂数据结构进行编码,使其在支持这种输入的所有语言中都能理想地工作。使用JSON格式作为编码复杂数据的替代方法


由于您有一个复杂的数据结构,您可能应该使用JSON对数据进行编码:

data: {data: JSON.stringify(arrayTwo)},
在服务器上,您只需使用

$data = json_decode($_POST['data'], true);
$data
将具有与
阵列two
完全相同的结构

但是,如果您希望实际拥有名为
foo
arrayOne
的参数,那么您只需要序列化
arrayOne
的值:

data:  [
  {name:'foo',value:'blah'},
  {name:'arrayOne',value: JSON.stringify(arrayOne)}
],
在PHP中:

$arrayOne = json_decode($_POST['arrayOne'], true);

在发送数据之前,您似乎没有正确序列化数据
[object object]
是JavaScript对象的默认字符串表示形式:
console.log({}.toString())
。发布用于发送数据的代码。您使用的是哪个jQuery版本?print_r($arrayTwo['arrayOne'])只返回[object object],[object object]jQuery版本2.1.1Brilliant!谢谢你清楚准确的解释。像做梦一样工作。非常感谢你。
$arrayOne = json_decode($_POST['arrayOne'], true);