通过 $.post 发送对象
Sending object via $.post
我在名为 items 的变量中保存了一个对象。
0: Object
name: "Jim"
age: "42"
1: Object
name: "Bill"
age: "50"
当尝试 post
$.post("mypage.php", items, function(data)
我在 php 页面中得到一个空的 post 变量,但是这个 returns post 变量
$.post("mypage.php", "name=jim", function(data)
我做错了什么?
Edit 它是一个对象数组所以如果我通过
$.post( "mypage", items[0], function( data) {
我得到了一个结果,但是
$.post( "mypage", items, function( data) {
print_r为空
您正在使用 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']);
,你会得到一个有意义的结果。
看起来您正在 posting 的对象可能是具有以下格式的数组:
items = [
{
name: "Jim",
age: "42"
},
{
name: "Bill",
age: "50"
}
]
docs 似乎表明你必须传递一个普通对象。您可能想要 post 格式为:
的内容
items = {
people: [
{
name: "Jim",
age: "42"
},
{
name: "Bill",
age: "50"
}
]
};
那么您应该可以通过 $_POST['people']
.
访问数据
更新
准确地说,你可以post你的数组就好了,它会生成这个postJim=&Bill=
几乎肯定不是您想要的。但是,如果您遵循 jQuery.param 指定的语法,您的数组将被正确处理。应该是具有名称和值的对象数组:
items = [
{
name: "Jim",
value: "42"
},
{
name: "Bill",
value: "50"
}
]
我在名为 items 的变量中保存了一个对象。
0: Object
name: "Jim"
age: "42"
1: Object
name: "Bill"
age: "50"
当尝试 post
$.post("mypage.php", items, function(data)
我在 php 页面中得到一个空的 post 变量,但是这个 returns post 变量
$.post("mypage.php", "name=jim", function(data)
我做错了什么?
Edit 它是一个对象数组所以如果我通过
$.post( "mypage", items[0], function( data) {
我得到了一个结果,但是
$.post( "mypage", items, function( data) {
print_r为空
您正在使用 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']);
,你会得到一个有意义的结果。
看起来您正在 posting 的对象可能是具有以下格式的数组:
items = [
{
name: "Jim",
age: "42"
},
{
name: "Bill",
age: "50"
}
]
docs 似乎表明你必须传递一个普通对象。您可能想要 post 格式为:
的内容items = {
people: [
{
name: "Jim",
age: "42"
},
{
name: "Bill",
age: "50"
}
]
};
那么您应该可以通过 $_POST['people']
.
更新
准确地说,你可以post你的数组就好了,它会生成这个postJim=&Bill=
几乎肯定不是您想要的。但是,如果您遵循 jQuery.param 指定的语法,您的数组将被正确处理。应该是具有名称和值的对象数组:
items = [
{
name: "Jim",
value: "42"
},
{
name: "Bill",
value: "50"
}
]