Php 通过$.post发送对象

Php 通过$.post发送对象,php,jquery,ajax,object,post,Php,Jquery,Ajax,Object,Post,我在变量items中保存了一个对象 0: Object name: "Jim" age: "42" 1: Object name: "Bill" age: "50" 当试图发布 $.post("mypage.php", items, function(data) 我在php页面中得到一个空的post变量,但这将返回post变量 $.post("mypage.php", "name=jim", function(data) 我做错了什么 编

我在变量items中保存了一个对象

0: Object
    name: "Jim"
         age: "42"
 1: Object
    name: "Bill"
        age: "50"
当试图发布

$.post("mypage.php", items, function(data)
我在php页面中得到一个空的post变量,但这将返回post变量

$.post("mypage.php", "name=jim", function(data)
我做错了什么

编辑它是一个对象数组,因此如果我通过

$.post( "mypage", items[0], function( data) {
我得到一个结果,但是

$.post(“mypage”,项目,功能(数据){


print\r为空

您正在使用jQuery的一种奇怪行为。它可以在
$.param
函数中找到,该函数在后台用于根据数据准备AJAX查询

如果发送一个数组,jQuery希望它是一个对象数组,每个对象都有两个键,
name
value
。显然,您没有在该结构中提供数据。您的脚本实际发送的数据如下所示:

Jim=undefined&Bill=undefined
如果在PHP中执行
print\r($\u POST['Jim'])
,则会得到未定义的字符串

您显然不希望这样。您需要在对象中发送数组

{
  people: [
    {
      name: 'Jim', 
      age: 42
    }, 
    {
      name: 'Bill',
      age: '50'
    }
  ]
}
这样,您的数据将按如下方式序列化:

people[0][name]=Jim&people[0][value]=42&people[1][name]=Bill&people[1][age]=50

如果你打印($\u POST['people']);
,你会得到一个有意义的结果。

看起来你正在发布的对象可能是一个具有以下格式的数组:

items = [
    {
        name: "Jim",
        age: "42"
    },
    {
        name: "Bill",
        age: "50"
    }
]
似乎指示您必须传递一个普通对象。您可能希望发布以下格式的内容:

items = {
    people: [
        {
            name: "Jim",
            age: "42"
        },
        {
            name: "Bill",
            age: "50"
        }
    ]
};
然后您应该能够通过
$\u POST['people']
访问数据

使现代化 准确地说,您可以发布您的数组,它将生成此post
Jim=&Bill=

几乎肯定不是您想要的。但是,如果您遵循指定的语法,您的数组将得到正确的处理。应该是和具有名称和值的对象数组:

items = [
    {
        name: "Jim",
        value: "42"
    },
    {
        name: "Bill",
        value: "50"
    }
]

请您发布实际对象的代码。另外,仅供参考,没有“jQuery对象”这类东西,它只是一个对象。查看浏览器的开发工具。查看Net选项卡。是否发出请求?是否得到响应?它们是否包含您期望的数据?搜索JSON.stringify!@kasperTaeymans没有必要,jQuery有当您向任何AJAX函数提供对象时,它会自动为您提供。哦,好吧!我不知道…始终使用stringify。我确信这是正确的,并会将其标记为正确的,但我最终使用了$.AJAX,没有任何问题。实际上,这是错误的,jQuery接受数组很好,即使键没有作为名称/值对保留。jQuery可以处理数组,但它的行为与OP预期的不同。