我想使用jQuery $.post()
从客户端向PHP服务器发送一些数据。当它到达服务器时,我希望$_POST['myList']
等于以下任何一个(最简单的)。我应该在$.post()
内将数据对象设置为什么?
array (
0=>array('id'=>123,'d1'=>'aaa','d2'=>'xxx'),
1=>array('id'=>234,'d1'=>'bbb','d2'=>'yyy'),
2=>array('id'=>345,'d1'=>'ccc','d2'=>'zzz')
)
array (
123=>array('d1'=>'aaa','d2'=>'xxx'),
234=>array('d1'=>'bbb','d2'=>'yyy'),
345=>array('d1'=>'ccc','d2'=>'zzz')
)
答案 0 :(得分:2)
编辑:第一个看起来像一个简单的对象数组,但似乎jQuery需要这个作为键控对象:
var send_this = {
0: { id: 123, d1: 'aaa', d2: 'xxx' },
1: { id: 234, d1: 'bbb', d2: 'yyy' },
2: { id: 345, d1: 'ccc', d2: 'zzz' }
};
第二个看起来只有包含对象的对象的不同外观键:
var send_this = {
'123': { d1: 'aaa', d2: 'xxx' },
'234': { d1: 'bbb', d2: 'yyy' },
'345': { d1: 'ccc', d2: 'zzz' }
};
jQuery 1.7.1中的经过测试的实现:
$.post( '/herp.php', send_this, function(d) {
console.info( d );
});
PHP程序在$ _POST中完全按照您的需要接收数据。
答案 1 :(得分:1)
您应该使用JSON字符串来发送数据:以下是一个示例:
var pushData = {
id: "blalal",
id: "blalal",
id: "blalal",
};
JSON.stringify(pushData)
然后你可以发布它或其他什么
$.ajax({
url : "http://blalallalalal="+JSON.stringify(pushData),
type : "POST",
dataType: "text",
success: function (data) {
},
error: function() {
// alert("fsdf");
}
});
然后从php端使用
$data = get_object_vars(json_decode($dataJSON));
DONE
答案 2 :(得分:1)
选项1
var data = [
{ id: 123, d1: 'aaa', d2: 'xxx' },
{ id: 234, d1: 'bbb', d2: 'yyy' },
{ id: 345, d1: 'ccc', d2: 'zzz' }
];
选项2
var data = {
'123': { d1: 'aaa', d2: 'xxx' },
'234': { d1: 'bbb', d2: 'yyy' },
'345': { d1: 'ccc', d2: 'zzz' }
};
然后
$.post(url, {mylist: data});
答案 3 :(得分:0)
您可以将它们作为三个数组发送,每个属性一个。
myList_id[]=123&myList_d1[]=aaa&myList_d2[]=xxx&myList_id[]=234&...
在PHP中,您会收到$_POST['myList_id']
,$_POST['myList_d1']
和$_POST['myList_d2']
,您可以将它们合并到您想要的数组中。
或者,如果您包含指数,您可以更进一步:
myList[0][id]=123&myList[0][d1]=aaa&myList[0][d2]=xxx&myList[1][id]=234&...
将直接为您提供数组:$_POST['myList']
答案 4 :(得分:0)
如果您使用jQuerys $.post
或$.get
, 不 需要编码/解码,只需将JS对象作为数据传递参数...
var data = {
"myList" : {
0 : {"id":1,...etc},
1 : {"id":2,...etc},
2 : {"id":3,...etc},
etc...
}
};
// post or get
$.post(
url2post,
data,
callbackFunc
);