我在名为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为空
看起来你发布的对象可能是一个数组,格式如下:
items = [
{
name: "Jim",
age: "42"
},
{
name: "Bill",
age: "50"
}
]
文档似乎表明您必须传递一个普通对象。你可能想发布以下格式的东西:
items = {
people: [
{
name: "Jim",
age: "42"
},
{
name: "Bill",
age: "50"
}
]
};
然后您应该能够通过$_POST['people']
访问数据。
更新
准确地说,你可以很好地发布你的数组,它会生成这个后Jim=&Bill=
几乎肯定不是你想要的。但是,如果您遵循jQuery.param指定的语法,您的数组将得到正确处理。应该是和具有名称和值的对象数组:
items = [
{
name: "Jim",
value: "42"
},
{
name: "Bill",
value: "50"
}
]
您正在使用一种奇怪的jQuery行为。它可以在$.param
函数中找到,该函数在后台用于根据数据准备AJAX查询。
如果发送一个数组,jQuery希望它是一个对象数组,每个对象都有两个键name
和value
。您显然没有在该结构中提供数据。您的脚本实际发送的数据如下所示:
Jim=undefined&Bill=undefined
如果在PHP中执行print_r($_POST['Jim']);
,则会得到字符串undefined
。
你显然不想要这个。您需要在对象内发送数组。
{
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
如果你做print_r($_POST['people']);
,你会得到一个有意义的结果。