通过PHP将多维数组发布到服务器

时间:2012-11-27 21:05:13

标签: php javascript jquery ajax post

  

可能重复:
  multi-dimensional array post from form

我想使用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')
)

5 个答案:

答案 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
);