0

可能重复:
表单中的多维数组发布

我想使用 jQuery 将一些数据从客户端发送到 PHP 服务器$.post()。当它到达服务器时,我想$_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')
)
4

5 回答 5

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 中完全按照您的需要接收数据。

于 2012-11-27T21:11:32.097 回答
2

您应该使用 JSON strong 来发送数据:这是一个示例:

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

完毕

于 2012-11-27T21:12:41.373 回答
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});
于 2012-11-27T21:19:32.180 回答
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']

于 2012-11-27T21:11:22.217 回答
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
);
于 2012-11-27T21:16:25.483 回答