将对象数组作为 ajax 发布数据发送

Sending an array of objects as ajax post data?

本文关键字:数据 布数据 数组 ajax 对象      更新时间:2023-09-26

我的总体目标是获取页面上的所有下拉菜单,并将其发送给php文件进行处理。

现在,我在jQuery中这样做的方式是创建一个整体调度数组,然后将要更新的每个元素添加到该数组中。所以我有这样的东西:

var schedule = [];
var data = { 
   'user_id' : '12', 
   'day_of_week' : 'Monday',
    'when' : 'start',
    'time' : '12 AM'
 }
schedule.push(data);
var data = { 
   'user_id' : '13', 
   'day_of_week' : 'Tuesday',
    'when' : 'end',
    'time' : '12 AM'
 }
schedule.push(data);
// schedule would have two objects in it

显然在循环和东西中。

因此,在本例中,我的调度数组中有两个对象。

现在,是否可以将该调度数组用作 ajax 数据?如果我执行以下操作,它不起作用:

$.ajax({
  url: 'http://something.com/ajax',
  data: schedule,
  type: 'POST'
});

但是,如果我将其更改为schedule[0]它就可以正常工作,但显然仅适用于调度数组中的第一件事。

data 属性应该是一个对象。

你可以做的是:

$.ajax({
  url: 'http://something.com/ajax',
  data: {schedule: schedule},
  type: 'POST'
});

因此,例如,如果您在PHP中收到此消息,则$_POST["schedule"]。这与你在JavaScript中完全相同。

哦,是的,我忘了...也看看.serialize().serializeArray()

确保您使用的是正确版本的 jQuery。在早期版本中,您必须通过刺痛;新版本对data变量使用"智能猜测"。你可以显式地告诉jQuery你正在向它传递一个带有dataType参数的javascript对象,或者你可以让jQuery弄清楚。

文档

jQuery.ajax() - http://api.jquery.com/jQuery.ajax/

将其作为 JSON 传递:

$.ajax({
  url: 'http://something.com/ajax',
  data: {schedule: schedule},
  type: 'POST',
  dataType: 'JSON'
});

它会将 JSON 编码的字符串发送到服务器,服务器端语言可以解析该字符串。(在 PHP 中,它是用 json_decode() 完成的)。