我有一个对象保存在名为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) {
我得到了结果,但
$。发布(" mypage",项目,功能(数据){
print_r为空
答案 0 :(得分:0)
您正在使用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']);
,您将获得有意义的结果。
答案 1 :(得分:0)
您发布的对象看起来可能是具有以下格式的数组:
items = [
{
name: "Jim",
age: "42"
},
{
name: "Bill",
age: "50"
}
]
docs似乎表明您必须传递普通对象。您可能希望发布格式为:
的内容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"
}
]