Php 通过$.post发送对象
我在变量items中保存了一个对象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) 我做错了什么 编
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']
访问数据
使现代化
准确地说,您可以发布您的数组,它将生成此postJim=&Bill=
几乎肯定不是您想要的。但是,如果您遵循指定的语法,您的数组将得到正确的处理。应该是和具有名称和值的对象数组:
items = [
{
name: "Jim",
value: "42"
},
{
name: "Bill",
value: "50"
}
]
请您发布实际对象的代码。另外,仅供参考,没有“jQuery对象”这类东西,它只是一个对象。查看浏览器的开发工具。查看Net选项卡。是否发出请求?是否得到响应?它们是否包含您期望的数据?搜索JSON.stringify!@kasperTaeymans没有必要,jQuery有当您向任何AJAX函数提供对象时,它会自动为您提供。哦,好吧!我不知道…始终使用stringify。我确信这是正确的,并会将其标记为正确的,但我最终使用了$.AJAX,没有任何问题。实际上,这是错误的,jQuery接受数组很好,即使键没有作为名称/值对保留。jQuery可以处理数组,但它的行为与OP预期的不同。